Показывать количество корзин WooCommerce вне WordPress

У меня есть полный сайт, который я уже построил. Я установил WordPress в подкаталог (/ shop), и я использую WooCommerce для продажи товаров.

В верхней строке меню на странице магазина у меня есть значок корзины, показывающий количество товаров в корзине.

Я хотел бы, чтобы пользователь снова щелкал на страницах сайта, не относящихся к WordPress, чтобы продолжить показ количества товаров в корзине. Может ли кто-нибудь указать мне правильное направление? Я попытался включить основной класс class-woocommerce.php, но он не работает.

Вот что я использовал для тестирования в моем файле 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 элементов, хотя у меня есть элементы, помещенные в корзину.

1

Решение

Обновить:

Это также можно сделать, установив пользовательский файл 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

Проверено и работает:

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]