Как вывести похожие страницы WordPress по меткам

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

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

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

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

1234567891011
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 Вашего шаблона.

123456789101112131415161718192021222324252627282930313233
<?function wpb_related_pages(){$orig_post=$post;global$post;$tags= wp_get_post_tags($post->ID);if($tags){$tag_ids=array();foreach($tagsas$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) сразу после строк:

12
<?phpwhile( have_posts()): the_post();?><?php get_template_part('content','page');?>

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

123
<?phpwhile( have_posts()): the_post();?><?php get_template_part('content','page');?><?php wpb_related_pages();?>

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

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