我正在使用一个由别人开发的插件,该插件输出一个简码[wof_wheel id="1111"]
。我在页面上使用此短代码。
我试图将条件逻辑应用于简码,以仅在购物车中的商品数大于4的情况下才显示/运行简码。
我知道如何使用WC()->cart->get_cart_contents_count()
获取并检查购物车中的商品数量,但不确定是否可以实现简码显示/运行逻辑。
function do_shortcode() {
$items_count = WC()->cart->get_cart_contents_count();
if ($items_count > 4) {
DISPLAY/RUN SHORTCODE
} else if ($items_count < 4)
{
DO NOT DISPLAY/RUN SHORTCODE
}
}
短代码是否可以使用这种条件逻辑?
答案 0 :(得分:2)
您可以使用所需的条件逻辑将简码嵌入自定义简码中:
add_shortcode( 'my_wheel', 'custom_conditional_wof_wheel' );
function custom_conditional_wof_wheel( $atts ){
$atts = shortcode_atts( array(
'id' => '',
'count' => '4', // 4 cart items by default
), $atts, 'my_wheel' );
// If there is more than 4 items count in cart the shortcode [wof_wheel] is executed
if( WC()->cart->get_cart_contents_count() > $atts['count'] ){
$id = $atts['id'];
return do_shortcode( "[wof_wheel id='$id']" );
}
// Else it display nothing
return '';
}
代码进入您的活动子主题(活动主题)的function.php文件中。测试和工作。
(请参阅最后如何测试)。
用法:
1)购物车中有4个以上的商品(在短代码中默认设置 4个商品):
[my_wheel id="1111"]
2)例如,购物车中有6个以上商品:
[my_wheel id="1111" count='6']
如何对此进行测试。
由于我无法测试来自特定第三方插件的此短代码,因此我创建了一个[my_wheel]
短代码,该短代码将输出在短代码参数id
中提供的ID:
add_shortcode( 'my_wheel', 'custom_conditional_wof_wheel' );
function custom_conditional_wof_wheel( $atts ){
$atts = shortcode_atts( array(
'id' => '',
'count' => 4,
), $atts, 'my_wheel' );
if( WC()->cart->get_cart_contents_count() > $atts['count'] ){
$id = $atts['id'];
return do_shortcode( "[wof_wheel id='$id']" );
}
return '';
}
代码进入您的活动子主题(活动主题)的function.php文件中。
然后,我在页面的Wordpress文本编辑器中添加了[my_wheel id="1111"]
短代码,并且当购物车中的商品计数为5或更多时,我得到以下显示:
因此有效。
答案 1 :(得分:2)
@LoicTheAztec是一个很好的解决方案,但是如果您需要其他解决方案,则可以使用以下方法:
WordPress具有内置功能,可让您删除短信的默认回调函数,并将其替换为自定义的短信。
在这种情况下,我们将检查购物车内容计数是否大于4,然后删除默认回调并将其替换为我们的回调。
例如,我将考虑您拥有的页面ID是49,在使用此代码来匹配包含短代码的页面时应更改此页面ID。
//Our Check
function checkShortCode()
{
$page = get_post(49);
if (WC()->cart) {
$items_count = WC()->cart->get_cart_contents_count();
if ($items_count == 4) {
//Remove the Default Hook function for this shortcode
remove_shortcode('wof_wheel');
//Add custom callback for that short to display whatever message you want
add_shortcode('wof_wheel', 'myCustomCallBack');
}
}
}
add_action('wp_loaded', 'checkShortCode');
现在我们需要添加自定义回调以显示所需的任何消息:
function myCustomCallBack()
{
echo 'my shortcode is running';
}
上面的代码已经过测试,并且可以100%工作
答案 2 :(得分:1)
您可以使用以下代码添加条件短代码:
do_shortcode()
注意:在上述问题中,您重新声明了不正确的预定义函数,{{1}}是用于回显模板文件中的短代码的预定义函数。
有关更多帮助,请参见以下链接:Click Here