2013-07-02 46 views
1

我使用Cart66 WordPress插件,和我想包括在簡碼的變量,你可以看到下面的代碼:使用PHP變量

$price = do_shortcode('[add_to_cart item="test-item" showprice="only" text=""]').' test'; 
echo do_shortcode('[add_to_cart item="test-item" showprice="no" quantity="1" text="'.$price.'" ]'); 

我已經做了一些顯然這是在Wordpress短代碼中包含變量的正確方法,但這對我來說似乎不起作用,Cart66只是回退並使用默認的「添加到購物車」文本而不是上面簡碼中定義的文本。

任何人都可以看到我要去哪裏錯了嗎?

回答

0

我覺得有在returend值一些奇怪的字符是引起問題,我用下面的表達代碼,它似乎解決了我的問題:

$value = substr(do_shortcode('[add_to_cart item="test-item" showprice="only" text=""]'), 0, 4).' Test'; 
$patterns = array(); 
$patterns[0] = '/"/'; 
$replacements = array(); 
$replacements[2] = ' '; 
$value = preg_replace($patterns, $replacements, html_entity_decode($price, ENT_QUOTES)); 
echo do_shortcode('[add_to_cart item="test-item" showprice="no" quantity="1" text="'.$price.'" ]'); 

不用說這是一個非常複雜的解決方案。我最終通過使用Wordpresses WPDB class來使用一些很好的舊SQL。談到約7行代碼爲2:

$priceValue = $wpdb->get_var("SELECT price FROM wp_cart66_products WHERE id = x"); 
echo do_shortcode('[add_to_cart item="test-item" showprice="no" quantity="1" text="£'.$priceValue.' Membership" ]'); 

這是一個更好的解決方案,我不建議嘗試使用的東西,他們不打算使用簡碼。

0

您可以使用PHP的Output Buffering control

PS:do_shortcode()本身不呼應的輸出;無論綁定在該動作上,也可以自動回顯,也就是當您(A)編輯插件或(B)使用OB時。

2

正如您在Google簡碼中添加文字一樣正確但不完全正確。

您已使用「do_shortcode()」函數來替換短代碼功能並在前端顯示其功能。但是,如果您想在短代碼中添加參數並使其工作,則需要稍微更改短代碼功能。

你必須找到在包含簡碼的功能,您的文件簡碼:

查找代碼類似如下:
add_shortcode('add_to_cart','function_name');
function function_name($atts)
{
$atts //-- will be used to add parameters as you needed
}