我覺得有在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" ]');
這是一個更好的解決方案,我不建議嘗試使用的東西,他們不打算使用簡碼。