在 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
已测试并有效:
我已经建立了一个完整的网站。我现在已经在一个子目录 (/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
已测试并有效: