1

我正在使用 Cart66 Wordpress 插件,并且我正在尝试在短代码中包含一个变量,您可以看到以下代码:

$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 只是退回并使用默认的“添加到购物车”文本而不是文本在上面的简码中定义。

谁能看到我要去哪里错了?

4

4 回答 4

2

正如您用谷歌搜索在简码中添加文本是正确的但不完全正确。

您使用了“do_shortcode()”函数,该函数用于替换简码功能并在前端显示其功能。但是,如果您想在简码中添加参数并使其正常工作,您需要稍微更改简码功能。

您必须在包含简码功能的文件中找到简码:

找到类似下面的代码:
add_shortcode('add_to_cart','function_name');
function function_name($atts)
{
$atts //-- will be used to add parameters as you needed
}

于 2013-07-02T17:30:12.577 回答
0

您可以使用 PHP 的输出缓冲控件

PS:do_shortcode()不会原生地回显输出;该操作上的任何绑定也可能会自行回显,即当您 (A) 编辑插件或 (B) 使用 OB 时。

于 2013-07-02T14:08:19.393 回答
0

我认为返回值中有一些奇怪的字符导致了问题,我使用了下面的表达式代码,它似乎解决了我的问题:

$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 类,我最终使用了一些好的旧 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" ]');

这是一个更好的解决方案,我不建议尝试将短代码用于它们不打算用于的事情。

于 2013-07-09T11:54:38.300 回答
0
于 2021-01-16T21:24:57.540 回答