在 Wordpress 之外显示 WooCommerce 购物车数量

Show WooCommerce cart count outside of Wordpress

我已经建立了一个完整的网站。我现在已经在一个子目录 (/shop) 中安装了 Wordpress,并且我正在使用 WooCommerce 来推动产品的销售。

在商店页面的顶部菜单栏中,我有一个购物车图标,显示购物车中的产品数量。

我希望当用户点击回到网站的非 Wordpress 页面时继续显示购物车中的商品数量。有人能指出我正确的方向吗?我试图包括主要的 class-woocommerce.php class 但它不起作用。

这是我在 index.php 文件中用来测试的内容:

include 'shop/wp-content/plugins/woocommerce/includes/class-woocommerce.php';
global $woocommerce;
var_dump($woocommerce->cart);

编辑:

我现在包含 wp-load.php 而不是 class-woocommerce.php 并且当我转储 WooCommerce 购物车时我可以看到它但是它完全是空的,即有 0 件商品即使我有物品放在购物车里。

更新:

这也可以通过设置自定义 cookie 或更好地使用 javascript 会话存储来完成:

add_action('wp_footer', 'custom_cart_item_count_script');
function custom_cart_item_count_script(){
    if( WC()->cart->is_empty() )
        $cart_count = 0;
    else
        $cart_count = WC()->cart->get_cart_contents_count();

    if(isset($cart_count)){
    ?>
        <script type="text/javascript">
            jQuery(function($){
                var cartCount = <?php echo $cart_count; ?>,
                    csName = 'CARTCOUNT',
                    csStorage = sessionStorage.getItem(csName);

                if(csStorage == null || csStorage == 'undefined'){
                    sessionStorage.setItem(csName, cartCount);
                    console.log(sessionStorage.getItem(csName));
                }
            });
        </script>
    <?php
    }
}

此代码位于您的活动子主题(或活动主题)的 function.php 文件中。

已测试并有效。


在您的非 Wordpress 页面上:

您将需要获取此浏览器会话存储值。因此,您将在非 Wordpress 页面中添加如下内容:

?>
    <script type="text/javascript">
        jQuery(function($){
            var caName = 'CARTCOUNT',
                caStorage = sessionStorage.getItem(caName);

            if(caStorage == null || caStorage == 'undefined')
                $('span.cart-count').html('0');
            else
                $('span.cart-count').html(caStorage);

            console.log('css-read: '+caStorage);
        });
    </script>
    <p>Cart count: <span class="cart-count"></span></p>
<?php

已测试并有效: