Как вывести список похожих постов без плагинов

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

Шорткод — это такой короткий ключ, запускающий какую-либо функцию. Их часто используют в плагинах. Для модернизации темя нужно добавить в файл functions.php следующий код:

function related_posts_shortcode( $atts ) {
    extract(shortcode_atts(array(
        'limit' => '5',
    ), $atts));

    global $wpdb, $post, $table_prefix;

    if ($post->ID) {
        $retval = '
    '; // Get tags $tags = wp_get_post_tags($post->ID); $tagsarray = array(); foreach ($tags as $tag) { $tagsarray[] = $tag->term_id; } $tagslist = implode(',', $tagsarray); // Do the query $q = "SELECT p.*, count(tr.object_id) as count FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt get_results($q); if ( $related ) { foreach($related as $r) { $retval .= '
  • post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'
  • '; } } else { $retval .= '
  • No related posts found
  • '; } $retval .= '
'; return $retval; } return; } add_shortcode('related_posts', 'related_posts_shortcode');


Теперь чтобы вывести список похожих постов, достаточно в пост вставить шорткод (ключ):

[related_posts]

Этот код выводит 5 похожих постов, ориентируясь на метки (теги). Если нужно выводить большее или меньшее количество, то измените в третьей строчке число 5 на другое.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*