X

WordPress, WP Super Cache и Sape

В прошлый раз, в статье: WordPress, W3 Total Cache и Sape я уже рассказывал как использовать кеширование и сделать блок, который не будет кешироваться, для того чтобы поместить туда код сапы. Сегодня рассмотрим тот же способ, но уже для плагина WP Super Cache

!!! Описанный в статье способ не работает на новых версиях, в связи с изменениями в плагине. Про новый способ читатйте тут: WP Super Cache и Sape. Отключение кеширования.

Итак как и в прошлый раз, рассмотрим все по шагам:

  1. Создаем файл sape.php в корне сайта.
  2. Добавляем код от Sape который будет выводить ссылки.
  3. Устанавливаем плагин PHP Code. Админка>Плагины>Добавить новый
  4. Добавляем виджет PHP Code в сайдбар. Админка>Внешний вид>Виджеты
  5. В Titile пишем что-то вроде "Партнеры"
  6. В тело, пишем такой код
    <!--mclude sape.php-->
    <?php include_once( ABSPATH . 'sape.php' ); ?>
    <!--/mclude-->

    Выглядит это примерно так:

  7. Вот и всё. Можно идти проверять чек код, в коде страниц ( как проверить чек код, написано тут: Проверка корректности установки кода Sape на сайт )

Как я писал в статье про W3 Total Cache и Sape корректность работы кода (а именно то, что он не кешируется) можно проверить, добавив в созданный нами файл sape.php код вывода времени:

<?php time();?>

Этот код будет выводить число секунд, при каждом обновлении страницы, в том случае, если кеширование для блока не будет работать.

Обратите внимание, что кеширование надо проверять, после того, как вы разлогинитесь. Т.е. во время проверки, надо чтобы вы были не авторизованы. Т.к. в большинстве плагинов, кеширование по-умолчанию отключено для авторизированных пользователей. Наиболее простой и удобный способ это сделать, открыть другой броузер (если вы работаете в FF, то откройте сайт в Chrome, разумеется в Chrome вы так же должны быть не авторизированны)

Напоследок скажу, что так же можно использовать такие конструкции:

  • Подключаем файл www/scripts/adverts.php и выполняем функции: print_sidebar_ad(), do_more_stuff()
    <!--dynamic-cached-content--><?php
    include_once( ABSPATH . '/scripts/adverts.php' );
    print_sidebar_ad();
    do_more_stuff();
    ?><!--
    include_once( ABSPATH . '/scripts/adverts.php' );
    print_sidebar_ad();
    do_more_stuff();
    --><!--/dynamic-cached-content-->

    *Обратите внимание что перед <?php и после ?> не должно быть пробелов
    **ABSPATH - это константа WordPress, в которой находится путь к той же директории, где у вас лежит файл wp-config.php, обычно это корень сайта.

  • Выполняем функцию
    <!--mfunc function_name( 'parameter', 'another_parameter' ) -->
    <?php function_name( 'parameter', 'another_parameter' ) ?>
    <!--/mfunc-->

    Пример:

    <!--mfunc date( 'Y-m-d H:i:s' ) -->
    <?php date( 'Y-m-d H:i:s' ) ?>
    <!--/mfunc-->
  • Подключаем файл (мы использовали именно этот метод)
    <!--mclude file.php-->
    <?php include_once( ABSPATH . 'file.php' ); ?>
    <!--/mclude-->

Более подробно можно почитать в FAQ WP Super Cache, правдо там все на английском.

--[дополнено 05.12.13]--

Данный способ может уже не работать, т.к. автор плагина изменил подход к отключению кеширования, подробнее написано тут WP Super Cache: mfunc is going away in the next version. Информацию, как отключить кеширование сейчас можно найти  в FAQ WP Super Cache.

--[дополнено 27.02.14]--

Про новый способ читатйте тут: WP Super Cache и Sape. Отключение кеширования.

Комментарии (5)

  • Блин, да что ж такое-то: include($_SERVER['DOCUMENT_ROOT']."/wp-admin/sape_code_include.php");

  • Добрый день! Как мне надо написать, чтобы не кешировался следующий кусок кода:

    Заранее спасибо

  • Привет!

    Попробуй удалить кеш WP-Super-Сache вручную:
    - сделай бэкап файлов
    - зайди на фтп в папку www/wp-content/cache
    - удали все что там есть
    - разлогинься в админке wp
    - попробуй пообновлять страницу

    Так же проверь, правильность написания тэгов.

  • Здравствуйте! Очень полезная статья.
    Жаль, но у меня не работают почему-то теги mfunc и mclude. Плагин Super Cache кеширует вместе с нежелательными блоками. Не подскажите в чем может быть проблема?