dongshi7433 2018-11-08 11:52
浏览 41
已采纳

如果项目计数大于4,Wordpress将显示短代码

I am using a plugin (developed by someone else) which is outputting a shortcode [wof_wheel id="1111"]. I am using this shortcode on a page.

I am trying to apply conditional logic to the shortcode to only display/run the shortcode IF the number of items in the cart is greater than 4.

I know how to get and then check the cart item count with WC()->cart->get_cart_contents_count() but not sure if its possible to implement the shortcode display/run logic.

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
}
}

Is this type of conditional logic possible with shortcodes?

  • 写回答

3条回答 默认 最新

  • doucong3048 2018-11-08 15:18
    关注

    What @LoicTheAztec is one good solution but if you want another solution you can use the following:

    WordPress have built in function which allow you to remove the default callback function for your shortcode and replaced it with your custom one.

    In this case we are going to check if the cart content count is more than 4 then remove the default callback and replace it with ours .

    i will consider for example that the page id which you have is 49 here which you should change when using this code to match the page which contain the shortcode.

    //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');
    

    now we need to add our custom callback to display whatever message you want:

    function myCustomCallBack()
    {
        echo 'my shortcode is running';
    }
    

    the code above is tested and working 100%

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?