Как вывести похожие записи в WordPress без плагинов
WordPress это один из самых популярных движков и для него написаны плагины на любой вкус и практически для решения любых задач. Думаю каждый, кто разрабатывал сайт на котором есть много контента задумывался о том как заставить пользователей не уходить из сайта и читать статьи дальше. Для того чтобы пользователи оставались на сайте, необходимо им предложить интересующие их статьи. Эту задачу отлично решает плагин related post thumbnails но этот плагин имеет массу настроек, которые не всегда нужны, а если у вас уже установлено много плагинов, то добавление еще нескольких может здорово замедлить работу вашего сайта. Именно по этим причинам я начал копаться в интернете и искать решение задачи вывода похожих записей в блоге при помощи простого кода, без лишних настроек.
Одна из причин написания этой статьи послужило то, что плагин которым я привык пользоваться имел конфликт в работе с другим плагином и выводил вместо четырех картинок 16. В общем, история была не приятная.
Еще причина того что нужно уметь писать плагины самим, это создание премиум тем и продажа их в интернете на таких сайтах как themeforest.net или для ваших клиентов. Одно из важнейших требований themeforest при разработке темы для сайта является ее поддержка и развитие. Если плагин который вы использовали перестал работать, то объяснять тем кто уже купил вашу тему, почему у них ничего не работает, не приведет ни к чему хорошему. Если вы написали свой плагин например, похожих статей по всем правилам WordPress API и встроили его в свою тему, то мало вероятно что доработками надо будет заниматься в дальнейшем и просто так он не перестанет работать.
А теперь по сути о похожих записях с эскизами
Вставьте код на странице single.php в нужном месте.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php function my_related_posts() { $tags = the_tags(''); $args = array( 'posts_per_page' => 4, 'post__in' => $tags, ); $the_query = new WP_Query( $args ); echo '<ul>'; while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> <?php if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it. the_post_thumbnail(); } ?> </a><br clear="all" /></li> <?php endwhile; echo '</ul>'; wp_reset_postdata(); } ?> <?php my_related_posts() ?> |
После вставки кода у вас на странице будут выведены похожие статьи и картинки разной ширины. Останется только подправить стили css.
Делаем плагин на основе кода
Теперь если вам будет необходим плагин можно из этого всего его сделать, чтобы использовать его на своих проектах. Для начала в папке плагинов создаем папку my-related-post-thumbnail и в ней добавляем файл related-post-thumbnail.php. В файл нужно поместить код созданного плагина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?php /** * @package Package name * @version 1.0 */ /* Plugin Name: My plugin my-related-post-humbnail Plugin URI: https://wp-admin.com.ua Description: спасибо сайту wp-admin.com.ua, за хороший пример плагина ) Armstrong: My Plugin. Author: Name Author Version: 1.0 Author URI: https://wp-admin.com.ua */ /* display related data: <?php echo my_related_posts(); ?> */ function my_related_posts() { $tags = the_tags(''); $args = array( 'posts_per_page' => 4, 'post__in' => $tags, ); $the_query = new WP_Query( $args ); $res .= '<ul>'; while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> <?php if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it. the_post_thumbnail( ); } ?> </a><br clear="all" /></li> <?php endwhile; $res .= '</ul>'; wp_reset_postdata(); return $res; } ?> |
Для вставки кода в шаблон необходимо добавить код, например в single.php, в нужное место.
1 2 3 4 5 |
<?php if ( function_exists( 'my_related_posts' ) ) { echo my_related_posts(); } ?> |
Вот и все на сегодня, удачи в разработке.
/*
- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.