Домашняя » WordPress » Как отобразить боковую панель WordPress на сайтах, отличных от WordPress

    Как отобразить боковую панель WordPress на сайтах, отличных от WordPress

    Работая над моим последним проектом DevGrow Discussions, я столкнулся с необходимостью встроить всю мою боковую панель WordPress на сайт, отличный от WordPress - конкретно форум bbPress. Поскольку я использую различные виджеты для отображения популярных записей и другого динамического контента, простого копирования и вставки HTML-кода будет недостаточно. В конце концов, есть только два способа сделать это:

    1. Включите ваш сор-load.php файл в вашем приложении и фактически загрузите весь WordPress, чтобы получить доступ к функциям плагина
    2. Используйте простое кэширование, чтобы сохранить боковую панель в формате HTML и включить ее в любое другое приложение, а затем перестроить ее при необходимости при публикации нового контента

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

    Кэширование вашего WordPress боковой панели

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

    Чтобы сделать это эффективно, мы также создать журнал наших кэшированных файлов а также используйте это, чтобы определить, следует ли очищать кеш. Если это так, фактический файл кэша будет перезаписан при следующем посещении сайта WordPress, обеспечивая правильную боковую панель в обоих приложениях..

    Создание функций

    Для начала откройте тему functions.php файл и добавьте в него следующие функции:

     кэш функции ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Настройка файлов и каталогов: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Создать каталог кеша, если он не существует if (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Создаем журнал файлов кэша с их текущим состоянием if (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); иначе $ cacheLog = array (); if ($ task == 'start') // Если кеш существует, ему менее 6 часов и он не находится в очереди на удаление, сохраните его - в противном случае перестройте кеш if (file_exists ($ cacheFileName) && (time () - filemtime) ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false;  else  $cache = true; ob_start();  elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog));   function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ value) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, сериализации ($ cacheLog));  

    Эти первые функции, кэш, ключ к работе нашего кэша. В зависимости от того, где в вашем файле вы его называете, функция установит правильные файлы и каталоги, проверит, должен ли быть создан кеш, и если да, сохранит вывод и обновит журнал кеша. Функция использует выходную буферизацию PHP для сохранения любого сгенерированного HTML в текстовый файл.

    Вторая функция используется для очистки всех файлов кэша и полезна для добавления к существующим хукам WordPress. С его помощью мы можем сделать так, чтобы наш кэш очищался при каждом обновлении нашей темы, сохранении сообщения или обновлении виджетов на боковой панели путем добавления следующего в конце functions.php:

     add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10); 

    Полный список хуков можно найти в справочнике по плагину WordPress API..

    Настройка вашей боковой панели

    Теперь, когда у вас есть готовые функции, вы можете начать кэширование своей боковой панели. Откройте свой sidebar.php и добавьте эту строку в начало файла:

      

    Эта функция начнет кэширование необходимой боковой панели, иначе она ничего не будет делать. Из-за того, как работает функция буферизации вывода PHP, нам также необходимо закрыть буфер в конце файла. Добавьте эту строку в самый конец того же файла:

      

    После добавления этих двух строк обновите свой блог. Вы ничего не увидите в своем браузере, но проверьте / кэш каталог в папке вашей темы, и вы должны увидеть два файла, начинающиеся с кэш-.

    Используя ваш кеш

    Теперь, когда вы создали свой файл кэша, вы можете использовать его в любом приложении, которое имеет к нему доступ. Вы можете легко сделать это, используя include_once функция, но мне также нравится убедиться, что файл существует, просто чтобы быть в безопасности:

      

    Просто убедитесь, что ваш путь к файлу дважды проверен. Если вы хотите настроить кэш для удаления из внешнего приложения, вам нужно будет включить cache_purge где-то в вашем скрипте и просто вызывайте его всякий раз, когда это необходимо После этого нужно просто вызвать функцию:

      

    Заключение

    Этот метод действительно полезен для любого PHP-приложения, особенно когда вы хотите отображать динамический контент без потери производительности. Используйте его, чтобы ускорить установку WordPress или использовать полезные элементы (например, боковую панель) на любом другом веб-сайте или в приложении..

    Примечание редактора: Этот пост написан Monjurul Dolon для Hongkiat.com. Monjurul - дизайнер интерфейсов и веб-разработчик из Нью-Йорка, занимающийся фрилансом на протяжении всей жизни. Он ведет блог на DevGrow.com, где делится советами и ресурсами по веб-разработке и дизайну..