Как показывать связанные статьи для поста в WordPress
Показатель отказов на сайте – это процент посетителей сайта, которые покидают ваш сайт через некоторое время, а не продолжают просматривать другие страницы вашего сайта. Это один из немаловажных показателей СЕО-продвижения и ранжирования в поисковых системах.
Одним из способов снизить показатель отказов на сайте есть показ блока связанных публикаций для данного поста. Так вы предлагаете вашим читателям не покинуть сразу сайт, а продолжить чтение других статей. Тем самым, также, достигается и увеличение количества просмотров страниц.
В этой статье мы расскажем вам, как можно легко показывать связанные публикации в WordPress без помощи плагина.
Рекомендуемые публикации в WordPress без плагина
С помощью этого кода вы будете делать выборку из базы данных постов, которые имеют такую же категорию, как и текущий пост. Создайте в папке активной темы WordPress файл-шаблон под названием loop-related-posts.php
и следующим содержанием:
<?php $orig_post = $post; global $post; $categories = get_the_category($post->ID); if ($categories) { $category_ids = array(); foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id; $args=array( 'category__in' => $category_ids, 'post__not_in' => array($post->ID), // здесь мы можем исключить выборку статей по их ID 'posts_per_page'=> 10, // ограничиваем количество статей для показа 'ignore_sticky_posts' => 1, 'orderby'=>'rand' // делать выборку из базы данных рандомно (случайно) ); $my_query = new wp_query( $args ); if( $my_query->have_posts() ) {?> <div class="related-posts"> <h3><?php _e('Related posts','sebweo'); ?></h3> <div class="row"> <div class="col-lg-12"> <div class="related-post-items"> <?php while( $my_query->have_posts() ) { $my_query->the_post(); ?> <div class="related-post-one"> <a itemprop="url" href="<?php the_permalink();?>" title="<?php printf('%s', the_title_attribute('echo=0')); ?>" rel="bookmark"> <?php if (has_post_thumbnail()) { $image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'thumbnail'); ?> <img src="<?php echo $image[0]; ?>" alt="<?php the_title_attribute(); ?>" /> <?php } ?> </a> <div class="related-post-title"> <a itemprop="url" href="<?php the_permalink();?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'sebweo' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a> </div> </div> <?php } ?> </div> </div> </div> </div> <?php } } $post = $orig_post; wp_reset_query(); ?>
Теперь нам нужно подключить этот шаблон в шаблоне одиночного поста. Для показа одиночного поста служит файл-шаблон single.php
в папке активной темы, например, /wp-content/themes/ТЕМА/
.
Откройте этот файл и добавьте в нужном месте подключение шаблона для связанных постов. Как правило, связанные посты добавляют в конце статьи, поэтому подключайте шаблон перед закрытием цикла:
<?php while ( have_posts() ) : the_post(); ?> <?php // контент статьи ?> <?php // подключаем блок связанных статей ?> <?php endwhile; ?>
Шаблон подключается функцией WordPress:
<?php get_template_part( $slug, $name ); ?>
где $slug
– первая часть названия, а $name
– вторая часть названия
В нашем примере, чтобы подключить шаблон loop-related-posts.php
мы должны вызвать следующее:
<?php get_template_part( 'loop', 'related-posts' ); ?>
Поэтому, кусок кода в файле single.php
будет иметь следующий вид:
<?php while ( have_posts() ) : the_post(); ?> <?php // контент статьи ?> <?php // подключаем блок связанных статей ?> <?php get_template_part( 'loop', 'related-posts' ); ?> <?php endwhile; ?>
Теперь можете смело открыть свой сайт и проверить работу этого кода.
Надеемся, что сегодняшний урок вам пригодиться!
Анна
Ешкин кот, как сложно. Это все для программистов? А плагин какой то есть?
ZAnatoly
Наоборот, этот код максимально упрощает задачу. Плагины делают много лишней работы. Если вам нужен плагин, по ссылке огромный их выбор: https://wordpress.org/plugins/search/Related+Posts/