Хук для Вордпресс. Регистрируем метки для страниц и выводим похожие страницы по меткам без плагина. Штука весьма полезная и опциональная.

Данная процедура состоит из 2-х этапов:

1) Регистрируем метки для страниц

Представленный ниже код добавляем в файл functions.php Вашего шаблона. После этого у Вас появится возможность добавлять метки к страницам.

1
2
3
4
5
6
7
8
9
10
11
function true_apply_tags_for_pages(){
add_meta_box( 'tagsdiv-post_tag', 'Теги', 'post_tags_meta_box', 'page', 'side', 'normal' );
register_taxonomy_for_object_type('post_tag', 'page');
}
add_action('admin_init','true_apply_tags_for_pages');
function true_expanded_request_post_tags($q) {
if (isset($q['tag']))
$q['post_type'] = array('post', 'page');
return $q;
}
add_filter('request', 'true_expanded_request_post_tags');

2) Выводим похожие страницы

Представленный ниже код добавляем в файл functions.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
<?
function wpb_related_pages() { 
$orig_post = $post;
global $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag)
$tag_ids[] = $individual_tag->term_id;
$args=array(
'post_type' => 'page',
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=>8 // количество выводимых страниц
);
$my_query = new WP_Query( $args );
if( $my_query->have_posts() ) {
echo '<h3>Похожие страницы</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li><a href="<? the_permalink()?>" title="<?php the_title(); ?>"><?php the_post_thumbnail('thumb'); ?></a>
<h3><a href="<? the_permalink()?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
</li>
<? }
echo '</ul>';
} else { 
echo "Похожие страницы не найдены";
}
}
$post = $orig_post;
wp_reset_query(); 
}
?>

Теперь, чтобы похожие страницы отображались, устанавливаем вот это строку:

1
<?php wpb_related_pages(); ?>

в файл, отвечающий за вывод отдельных страниц (как правило — это page.php) сразу после строк:

1
2
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>

В конечном итоге должно получиться следующее:

1
2
3
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php wpb_related_pages(); ?>

Внимание! Содержимое может немного отличаться, в зависимости от используемого Вами шаблона.

Да, по умолчанию информация будет выводиться маркированным списком с миниатюрами, но, это все можно облагородить при помощи собственного CSS кода.

Пример реализации можно посмотреть на данном сайте (блок «Возможно Вас заинтересует»).

Возможно Вас заинтересует: