• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Wp Super Cache

Dark Wizard

Гуру форума
Регистрация
23 Сен 2007
Сообщения
194
Реакции
80
Стоит WooCommerce и WP Super Cache. Плагин кэширует виджет миникорзины (не обновляет данные в ней). Подскажите, как-то можно на всех страницах сайта отображать данные корзины (кол-во товара и сумма заказа), при это используя кэширование?

Может виджет какой работающий с Wp Super Cache, или может код миникорзины выводить в iframe...

7d3c8a4ef2.png
 
Только с этим плагином не работает удаление товаров из корзины
когда кусками код я не очень понимаю что нужно сделать, лучше в личке обсудить, будет понятно.
Обычно в таких случаях когда ничего не идет, иду в обход, в данном случае можно через API woocommerce (или плагин поставить), удаляем из корзины post запросом, далее скриптом очищаем на клиенте.
 
когда кусками код я не очень понимаю что нужно сделать, лучше в личке обсудить, будет понятно.
Обычно в таких случаях когда ничего не идет, иду в обход, в данном случае можно через API woocommerce (или плагин поставить), удаляем из корзины post запросом, далее скриптом очищаем на клиенте.
Я не разобрался в чём проблема, когда кладу 3 разных товара в корзину, удаляю один, потом другой, то первый обратно появляется. И это с учётом что я прописал все вариации адреса /cart/ в исключения (которые не нужно кэшировать). Могу в личку код скинуть...

А по коду - банальный вопрос, что нужно прописать в пустом php файлы, чтобы функции wordpress/woocommerce работали. Вот как этот API woocommerce подключить (файл лежит отдельно, например, в корне сайта, он не грузится частью темы, т.е. переходим по прямой ссылке site.ru/mini-cart-load.php и там просто две цифры - кол-во товаров и сумма заказа.
 
что нужно прописать в пустом php файлы
Лучше не в пустом, а в файле темы, общем или шаблона страницы. Пояснение:

Что друпал, что вордпресс - функциональные движки, работают через переопределение функций уже написанных где-то. Это значит что приоритет будет в обратном порядке подключения.
Т.е. 1 - плагин woocommerce 2 - файл функций темы functions.php 3 - файл шаблона, допустим cart.php (опять же вариации где он лежит, лучше копировать в тему, по умолчанию из папки плагина)
 
Лучше не в пустом, а в файле темы, общем или шаблона страницы. Пояснение:

Что друпал, что вордпресс - функциональные движки, работают через переопределение функций уже написанных где-то. Это значит что приоритет будет в обратном порядке подключения.
Т.е. 1 - плагин woocommerce 2 - файл функций темы functions.php 3 - файл шаблона, допустим cart.php (опять же вариации где он лежит, лучше копировать в тему, по умолчанию из папки плагина)

Я же всё равно обращаюсь к файлу напрямую. Т.е. в div миникорзины я загружаю сгенерированный контент этим файлом (где он лежит не принципиально). Смысл в том, что на кэшированной статичной html странице в div через ajax подгружаются актуальные данные корзины. Что мне нужно в начале этого файла прописать, чтобы работали функции типа "WC()->cart->get_cart()"? Чтобы не городить самодельные запросы к БД напрямую.
 
Не совсем понятно что не хватает в данном случае, но делать нужно Для просмотра ссылки Войди или Зарегистрируйся когда вызов из файла

В общем, я так и не разобрался, как в пустом файле сделать функции wordpress/woocommerce, потому что они не работают без инициализации. Я не могу создать в корне сайта файл test.php с содержимым "WC()->cart->get_cart()", это не будет работать, потому что функция WC() не определена.

Сделал как посоветовали в рамках темы - создал в папке темы mini-cart-page.php такой:

Код:
<?php
/**
*
* Template Name: Мини корзина
*
*/

if ( ! defined( 'ABSPATH' ) ) {
  exit; // Exit if accessed directly
}


$total = 0;
$all_quality = 0;

if( sizeof( WC()->cart->get_cart() ) > 0 ){
  foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ){
    $all_quality += $cart_item['quantity'];
    //высчитываю сумму
    $_product     = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
    $total += ($_product->get_price() * $cart_item['quantity']);
  }
}
else $all_quality = 0;


echo '<p>Товаров:&nbsp;&nbsp;<span>'.$all_quality.'</p>';
echo '<p>Сумма:&nbsp;&nbsp;<span class="woocommerce-Price-amount amount">'.$total.'&nbsp;<span class="woocommerce-Price-currencySymbol">₽</span></span></p>';
?>

Потом создал пустую страницу и поставил в ней шаблон отображения "Мини корзина" и адрес minicart

И в конце прописал в теме в header.php

Код:
<script src="/js/jquery.1.12.4.min.js"></script>
<script src="/js/lightslider.js"></script>
<script type="text/javascript" >
//обновление мини корзины
$( document ).ready(function() {
$.post ('/minicart/ ', function (result) {
     $('#minicart').html (result);
  });
return false;
});</script>

(без первых двух библиотек у меня почему-то не работает)

а сам блок миникорзины такой

Код:
echo '<a href="/cart"><img src="/wp-content/themes/mytheme/images/cart-icon.png"><span class="title">Моя корзина</span>';
echo '<div id="minicart" name="minicart">';
echo '<img src="/images/load.gif" border="0" style="float:right;margin:0;padding:0;padding-right:30px;">';
echo '<p>Товаров:&nbsp;&nbsp;</p>';
echo '<p>Сумма:&nbsp;&nbsp;</p>';
echo '</div>';
echo '</a>';

Так всё работает, правда данные обновляются через 2-3 секунды после загрузки страницы. Думаю, добавлю в wp-rocket просто в исключения /minicart/ и кэширование должно работать.
 
  • Нравится
Реакции: RORC
Я не могу создать в корне сайта файл test.php с содержимым "WC()->cart->get_cart()", это не будет работать
И не должно, или нужно инициализировать весь вордпресс или через систему плагинов или шорткодов на пустой странице. Когда говорил о файле, имел ввиду тот же файл темы, что отвечает за корзину, к нему дописать.

Корзину нужно кешировать только пустую и то не всегда это возможно.
 
Назад
Сверху