Главная > CMS | Sape | Wordpress | Монетизация > WP Super Cache и Sape. Отключение кеширования.

WP Super Cache и Sape. Отключение кеширования.

27.02.2014 16 комментариев » Просмотры: 6 732
 

Отключение кеширования в WP Super Cache

В очередной раз столкнулся с необходимостью поставить код Sape на сайт где был включен плагин WordPress-а: WP Super Cache. К сожалению, старый способ описанный в статье: WordPress, WP Super Cache и Sape  более не работает, поэтому пришлось разобраться с новым способом интеграции куска кода, который не будет кешироваться.

Прежде всего хочу заметить, что подробно все описано в FAQ, там написано, что-то вроде:

Пример отключения кеширования смотрите в файле:
www/wp-content/plugins/wp-super-cache/plugins/dynamic-cache-test.php

Так и делаем, открываем этот файл и видим подробное описание на английском. Те кто захочет разобраться подробнее ознакомьтесь с комментариями, если не знаете английский воспользуйтесь переводчиком. Мы же пойдем дальше и напишем свой плагин по аналогии с примером. Итак, поехали..

Создаем файл:
www/wp-content/plugins/wp-super-cache/plugins/dynamic-widget-block.php

Добавляем в него такое содержимое:

Теперь создаем файл:
www/dwb-adapter.php

Добавляем в него такое содержимое:

Теперь нужно провести дополнительную настройку плагина, для этого заходим в админку на страницу конфигурации плагина и на вкладке Advanced, включаем опцию Enable dynamic caching.

Включение использования динамического кеширования WP Super Cache

Включение использования динамического кеширования WP Super Cache

Далее можно добавить следующий код прямо в файлы темы (например sidebar.php), но я предпочитаю использовать виджеты. Поэтому устанавливаем, если еще не установлен, виджет для вывода PHP кода: PHP Code Widget, помещаем его в нужный сайдбар и добавляем такой код:

Выглядит это так:

Добавляение кода в виджет PHP Code Widget

Добавляение кода в виджет PHP Code Widget

Теперь надо включить кеширование (если еще не включено) и очистить кеш WP-Super-Cache, для этого переходим к его конфигурации устанавливаем радио кнопку в положение Caching On и нажимаем кнопку Delete Cache:

Включение кеширования и удаление кеша WP Super Cache

Включение кеширования и удаление кеша WP Super Cache

Собственно теперь можно проверять работает ли кеширование для нашего файла, переходим на страницу сайта где отображается сайдбар в который вы добавили виджет, и смотрите выводится ли метка-времени (что-то типа 1393504359), эта метка времени должна увеличиваться при обновлении страницы:

Метка времени

Метка времени

Если метка времени обновляется и кеширование включено, значит все ок, наш файл НЕ кешируется..

Теперь остается в файле www/dwb-adapter.php убрать код вывода метки

и добавить наш контент который не должен кешироваться, например код подключения сапы:

на этом всё 🙂

 

Автор: | Теги: , , ,

Важно

У нас заработал ФОРУМ. Все вопросы, которые не касаются статьи, а так же вопросы по конкретно вашему случаю нужно задавать и обсуждать именно там, в разделе "Помощь пользователям".

16 комментариев

Написать свой
  1. Виктор Ответить
    07.11.2017 в 6:32 пп
    Всем привет. Можно ли отключить кеширование Супер Кешем для виджета woocommerce recently viewed products?
    Если да, то поделитесь кодом, пожалуйста. Сам не доганяю.
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      07.11.2017 в 10:57 пп
      Привет, лично я не знаю как это сделать. Возможно, кто-то другой ответит.
  2. sasa Ответить
    12.07.2016 в 11:16 дп
    в файл dwb-adapter.php
    вставил вывод тэгов
    wp_tag_cloud('');
  3. sasa Ответить
    12.07.2016 в 11:00 дп
    у меня этот плагин не работает

    Страница eeeeee.com не работает

    Сайт eeeeee.com пока не может обработать этот запрос.
    HTTP ERROR 500


    удаляю кэш, страница загружается нормально
    загружаю ту же страницу еще раз, вылазит такая ошибка
  4. Денис Ответить
    15.03.2016 в 12:41 дп
    У меня в меню выводится корзина с данными из WC()->cart->cart_contents - как для блока с foreach отключить кеширование?
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      15.03.2016 в 7:52 дп
      В FAQ все расписано, в разделе "How do I make certain parts of the page stay dynamic?"
  5. Радим Ответить
    06.02.2016 в 4:12 пп
    Добрый день!
    Подскажите, а если у меня в виджетах отображаются цитаты. И я бы хотел, что бы виджет с цитатами был динамичным (при обновлении цитата менялась). Как решить такую задачу?
    https://wordpress.org/plugins/quote-master/ - плагин для цитат
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      07.02.2016 в 12:32 пп
      Я не работал с данным виджетом, поэтому не знаю что там к чему. Но, самое простое решение, либо активировать ajax загрузку (если у виджета есть такие настройки), либо поискать виджет который умеет работать через ajax. Т.е. смысл в том, чтобы загрузка цитаты происходила отдельно от загрузки страницы.
  6. Андрей Ответить
    13.01.2016 в 4:41 дп
    Столкнулся с проблемой: WP Super cache кэширует страницы магазины из-за этого в магазине глюки: корзина не обновляется ,а вместе с ней глючит доставка . Отключение в настройках Wp Super Cache страниц магазина не работает. Возможно, кто нибудь сталкивался с похожей проблемой?
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      13.01.2016 в 7:19 пп
      Привет, попробуй добавить фрагменты страниц на вкладке "Настройки" плагина, там перед формой такой текст "Поле ниже Вы также можете заполнить фрагментами адресов страниц...". Только обрати внимание, что там два поля, одно НЕ кешировать, другое наоборот - кешировать. Под фрагментами, понимается часть url, например для site.com/checkout/step1 это может быть /checkout/. Если все равно не заработает, тогда советую смотреть в код wp super cache, в то место, где обрабатываются правила из этой формы и разбираться с конкретным случаем. В моем случае с wp polls, помогли фрагменты, так что мне не пришлось лезть в код.
  7. Dmity Ответить
    22.01.2015 в 5:58 пп
    Сейчас понадобилось убрать один виджет из кеша, просто он выводит у меня динамическую информацию, которая меняется каждую минуту/секунду, и не могу разобраться, видимо опять там всё поменялось, ваш вариант не работает.
    Подскажите, как сейчас реализовать отказ от кеширования отдельного виджета?
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      23.01.2015 в 8:45 дп
      Протестить сейчас не могу, но вроде как в официальном faq написано что по прежнему используют wpsc_cachedata. Там есть ряд требований, чтоб оно все работало, их можешь почитать в разделе "How do I make certain parts of the page stay dynamic".
      Еще подумай, если этот виджет должен так часто обновляться, мб есть смысл выводить и обновлять его ajax-ом. В FAQ пишут, что это рекомендованный способ для динамического контента.
      • Dmity Ответить
        23.01.2015 в 10:20 пп
        Да, спасибо, сделал через ajax.
  8. Артем Ответить
    18.04.2014 в 10:51 дп
    Скажите пожалуйста как отключить кеширование для хидера , сайдбара и футера
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      27.04.2014 в 8:50 дп
      Артем, могу ошибаться, но с помощью этого плагина такого сделать нельзя. Попробуй пойти от обратного и поискать плагин, который будет кешировать только нужные тебе блоки. Если есть опыт программирования, посмотри в сторону функций семейства ob_* с их помощью ты может получить вывод нужного куска функционала, сохранить его в кеш-файл, и потом проверив разницу между временем обновления файла и текущим временем (time-filemtime) можешь либо выводить данные из кеш-файла, либо пересоздавать его.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Разрешены HTML-теги: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>


Ниже приводятся ссылки на блоги ссылающиеся на этот пост:
  1. Pingback от Wordpress, WP Super Cache и Sape 27.02.2014