Как отображать похожие статьи в Wordpress без плагинов.
Статья поможет вам узнать о способах добавления блока "Похожие статьи" в ваш Wordpress блог без использования плагинов.
- wordpress
- 18/09/2009
- 1
- на главную
Зачем?
Плагины, на мой взгляд, штука для людей, которые абсолютно не хотят тратить свое время на редактирование кода. Их мало заботит, что их блог будет загружаться чуть медленнее. Отсутствие плагинов дает бОльшую свободу в редактировании возможностей блога, при условии, что вы хоть чуть-чуть разбираетесь в PHP. Так что если вам не безразлична скорость загрузки вашего блога на Wordpress и вы хотите точно знать как всё работает изнутри – вам лучше обойтись без плагинов.
Похожие статьи?
Отображать похожие материалы в конце каждой статьи – это так же естественно, как отображать комментарии. Блок “Похожие статьи” заинтересовывает пользователя, позволяет ему с удобством перейти к статье, которая ему интересна. Кроме того, этот блок создаст дополнительную перелинковку в вашем блоге, что не мало важно с точки зрения SEO.
Так дайте же код!
А вот он:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php //Использовать внутри цикла. Выводит 5 ссылок на статьи со схожими метками. $tags = wp_get_post_tags($post->ID); if ($tags) { echo 'Похожие статьи:'; $first_tag = $tags[0]->term_id; $args=array( 'tag__in' => array($first_tag), 'post__not_in' => array($post->ID), 'showposts'=>5, 'caller_get_posts'=>1 ); $my_query = new WP_Query($args); if( $my_query->have_posts() ) { while ($my_query->have_posts()) : $my_query->the_post(); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Перейти на <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php endwhile; } } ?> |
Дайте два!
Вот другой способ, вставьте этот код в файл 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 34 35 36 37 38 39 40 41 42 43 44 45 | function related_posts_shortcode( $atts ) { extract(shortcode_atts(array( 'limit' => '5', ), $atts)); global $wpdb, $post, $table_prefix; if ($post->ID) { $retval = '<ul>'; // Вытаскивает метки $tags = wp_get_post_tags($post->ID); $tagsarray = array(); foreach ($tags as $tag) { $tagsarray[] = $tag->term_id; } $tagslist = implode(',', $tagsarray); // Выполняет запрос $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 < NOW() GROUP BY tr.object_id ORDER BY count DESC, p.post_date_gmt DESC LIMIT $limit;"; $related = $wpdb->get_results($q); if ( $related ) { foreach($related as $r) { $retval .= ' <li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li> '; } } else { $retval .= ' <li>Кажется, статья уникальна...</li> '; } $retval .= '</ul> '; return $retval; } return; } add_shortcode('related_posts', 'related_posts_shortcode'); |
Теперь в то место, где вы хотите увидеть блок “Похожие статьи” следует просто добавить код :
[related_posts]
Поделиться с общественностью на Твиттере.
Allpa
21/09/2009
Вот и Вы туда же: есть код, но куда его вставлять – об этом Вы ни гу-гу :( В шаблона страницы? Поста? В какое конкретно место?
А когда я читаю про functions.php, то вообще начинаю дрожать мелкой дрожью – два раза я пыталась ковырять его, руководствуясь подсказками гуру от Wordpress, и оба раза мой бог в результате этих действий (и ведь я чётко следовала инструкциям, другое дело, что инструкции были неполными) “падал” мёртвым :(