2016-11-18 78 views
0

是否有可能從一個PHP文件返回一個變量,該文件包括一個html代碼和一個短代碼的組合,將用於woocommerce產品描述中並運行?返回的變量中的HTML和PHP代碼

(我已經安裝的擴展,它允許WYSIWYG編輯器內部的PHP代碼執行)

,我有到目前爲止的代碼是:

function age ($example) { 

$x = "<b>Alter:</b> [insert_php]global $product; $dobs = get_the_terms($product->id, "pa_geburtsdatum"); foreach ($dobs as $dob) { $from = new DateTime($dob->name); $to = new DateTime("today"); echo $from->diff($to)->y; }[/insert_php]"; 

return $x; 
} 

UPDATE: 我已創建自定義短碼,在幕後進行所有計算,這樣更加舒適和安全。在短代碼之間,我有dob,然後用特定函數計算年齡後再給出年齡。

+0

首先,您需要提取''[insert_php]'和'[/ insert_php]'之間的字符串,然後使用php'eval'函數來執行代碼。 – developer

+0

我現在不想執行它。代碼(html + php + shortcode)需要完全按照我的woocommerce產品簡短說明進行傳輸。 – fourgood

+0

有時候'eval()'是有用的,但是看到你甚至沒有完全理解字符串轉義,我只能得出1個結論。你不會***理解安全性,爲什麼你會使用運行PHP代碼來描述?我的回答是,不,沒有辦法。 – Xorifelse

回答

0

您可以使用不安全且令人難以置信的危險eval()函數來獲取短代碼的值並將其作爲PHP運行。這會運行任何你傳遞給它的任何東西,所以:

eval('global $product; $dobs = get_the_terms($product->id, "pa_geburtsdatum"); foreach ($dobs as $dob) { $from = new DateTime($dob->name); $to = new DateTime("today"); echo $from->diff($to)->y; }'); 

會產生你正在尋找的輸出。 [pontification]然而,我強調,這將是一個前瞻性網站上的一個可怕的想法。[/ pontification]如果它是我(而不是,對於他們自己的),我會做一個簡碼,你想要使用的參數並在幕後處理它們。

+0

其實我需要確切的這句話,然後將包括在woocommerce產品的簡短說明。如果產品頁面打開,簡碼運行php。 – fourgood

+0

然後eval()應該爲你做竅門。 –

+0

好的,但我如何獲得短代碼?由於此計算所使用的特定屬性,因此php必須在產品頁面上運行。 – fourgood