Почему стоит отключить автовывод YARPP
Плагин Yet Another Related Posts Plugin (YARPP) по умолчанию автоматически выводит блок связанных записей в конце контента. Это удобно, но часто негативно влияет на производительность сайта, особенно при большом количестве записей и сложных запросах. Автовывод затрудняет контроль над разметкой и стилями, а также создает дополнительные SQL-запросы на каждой загрузке страницы.
Отключение автовывода позволяет вручную реализовать вывод связанных записей в нужных местах, оптимизировать кэширование и избежать лишних вычислений, улучшая скорость и стабильность сайта.
Как диагностировать, что автовывод YARPP замедляет сайт
- Используйте плагин Query Monitor для анализа SQL-запросов на странице: YARPP добавляет сложные JOIN и WHERE, сильно нагружающие базу.
- Проверяйте время загрузки страниц с и без блока YARPP через инструменты типа GTmetrix или Google PageSpeed Insights.
- Проверьте, активен ли параметр автоподключения в настройках плагина (Show related posts automatically) в админке WordPress.
Пошаговое отключение автоподгрузки YARPP и ручной вывод
- Перейдите в Настройки > YARPP и снимите галочку с «Show related posts automatically».
- Добавьте следующий код в файл темы
functions.phpили в плагин для кастомных функций, чтобы вручную вывести связанные записи:
if (function_exists('yarpp_get_related')) {
$related = yarpp_get_related(['post_type' => 'post', 'limit' => 5]);
if ($related) {
echo '<div class="yarpp-custom">';
echo '<h3>Похожие записи</h3>';
echo '<ul>';
foreach ($related as $post) {
echo '<li><a href="' . get_permalink($post) . '">' . esc_html(get_the_title($post)) . '</a></li>';
}
echo '</ul>';
echo '</div>';
}
}- Вызовите этот код в нужном месте шаблона, например в
single.phpпосле контента:
the_content();
// Вставляем вручную блок YARPP
custom_yarpp_output();Для удобства можно оформить функцию custom_yarpp_output() как обертку, чтобы не дублировать код.
Проверка результата после отключения автоподгрузки
- Перейдите на страницу записи и убедитесь, что блок связанных записей не отображается автоматически в конце контента.
- Проверьте, что блок выводится только в том месте, где вы вставили вызов функции.
- Снова запустите Query Monitor и сравните количество и время SQL-запросов, связанных с YARPP.
- Проверьте визуальное отображение блока и корректность ссылок.
Частые ошибки при отключении автоподгрузки YARPP и их исправление
- Блок не выводится после отключения автоподгрузки: проверьте, что функция
yarpp_get_related()вызывается корректно и что в базе есть связанные записи. - Ошибки PHP при вызове функций YARPP: убедитесь, что плагин активен и функции доступны. Добавьте проверку
function_exists(). - Неправильный вывод HTML: используйте корректное экранирование
esc_html()и проверяйте структуру тегов. - Блок выводится дважды: проверьте, что автоподключение отключено в настройках плагина и код вызова не дублируется.
Практические советы по оптимизации и безопасности
- Кэширование: используйте плагин кеширования (например, WP Super Cache, LiteSpeed Cache) для сохранения HTML блока связанных записей и снижения нагрузки на базу.
- Ограничение количества: задавайте разумный лимит связанных записей, например 5-7, чтобы не создавать тяжелые запросы.
- Фильтрация по типу записи и таксономиям: в параметрах
yarpp_get_related()указывайтеpost_typeиtaxonomiesдля более точного и быстрого подбора. - Отложенная загрузка: для больших сайтов можно реализовать AJAX-подгрузку блока после загрузки страницы.
Сравнение способов вывода связанных записей YARPP
| Метод | Плюсы | Минусы | Рекомендации |
|---|---|---|---|
| Автовывод YARPP | Простота настройки и автоматический вывод | Высокая нагрузка, сложный контроль разметки | Подходит для малых сайтов |
Ручной вывод через yarpp_get_related() | Гибкость, оптимизация, контроль разметки | Требует доработки шаблонов | Рекомендуется для средних и крупных проектов |
| Вывод через AJAX | Минимальная нагрузка при загрузке страницы | Сложнее в реализации | Для высоконагруженных сайтов |