当购物篮在 Woocommerce 中有商品时添加自定义正文 class

Add a custom body class when basket has items in Woocommerce

当我的 woocommerce 购物车有购物篮商品时,我正在尝试进行一些样式调整。

添加项目时,会出现一个 'pay now with paypal' 按钮,但它的默认位置需要修复。不幸的是,我看不到出现此按钮时出现的任何 classes。

有谁知道当购物车总数不再为零时如何向正文添加 class?

如有任何帮助,我们将不胜感激。

这可以通过以下两个钩子函数完成:

  • 当购物车不为空时,第一个将添加 'has_items' class 到正文
  • 第二个将添加 'has_items' class 到正文(如果尚未设置)在 Ajax 添加到购物车事件 .

代码:

add_filter( 'body_class', 'add_body_class_for_cart_items' );
function add_body_class_for_cart_items( $classes ) {
    if( ! WC()->cart->is_empty() )
        $classes[] = 'has_items';

    return $classes;
}

add_action( 'wp_footer', 'add_body_class_for_ajax_add_to_cart' );
function add_body_class_for_ajax_add_to_cart() {
    ?>
        <script type="text/javascript">
            (function($){
                $('body').on( 'added_to_cart', function(){
                    if( ! $(this).hasClass('has_items') )
                        $(this).addClass('has_items');
                        console.log('added_to_cart');
                });
            })(jQuery);
        </script>
    <?php
}

代码进入您活跃的子主题(或主题)的 function.php 文件。

已测试并有效。