WordPress两种不需要插件添加相关文章的方法

wordpress
Wordpress的强大和易用,在于无数的主题和插件,但插件多了会影响网站的速度和安全。如果能用简单代码实现需要的功能,还是用代码好了。
在每篇文章的末尾,显示相关文章,可以更好的留住客户。
下面提供两种方法:

第一种

在所用主题的functions.php文件中,添加如下代码

function wp_get_related_posts()<br>{<br>global $wpdb, $post,$table_prefix;<br>$limit = 10; //How Many Related Posts Displayed<br>if(!$post->ID){return;}<br>$now = current_time(‘mysql’, 1);<br>$tags = wp_get_post_tags($post->ID);<br>$taglist = “‘” . $tags[0]->term_id. “‘”;<br>$tagcount = count($tags);<br>if ($tagcount > 1) {<br>for ($i = 1; $i < $tagcount; $i++) {<br>$taglist = $taglist . “, ‘” . $tags[$i]->term_id . “‘”;<br>}<br>}<br>$limitclause = “LIMIT $limit”;<br>$q = “SELECT p.ID, p.post_title, p.post_date,  p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy =’post_tag’ AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id  = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = ‘publish’ AND p.post_date_gmt < ‘$now’ GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;”;<br>$related_posts = $wpdb->get_results($q);<br>$output = “”;<br>if (!$related_posts)<br>{<br>$output .= ‘<li>No Related Posts</li>’;<br>}<br>foreach ($related_posts as $related_post )<br>{<br>$dateformat = get_option(‘date_format’);<br>$output .= ‘<li>’;<br>$output .= ‘<a href=”‘.get_permalink($related_post->ID).'” title=”‘.wptexturize($related_post->post_title).’ (‘.mysql2date($dateformat, $related_post->post_date).’)”>’.wptexturize($related_post->post_title).'</a> (‘.$related_post->comment_count .’)’;<br>$output .= ‘</li>’;<br>}<br>$output = ‘<h3>Related Posts</h3><ul>’ . $output . ‘</ul>’;<br>return $output;<br>}<br>function wp_related_posts_attach($content)<br>{<br>if (is_single()||is_feed())<br>{<br>$output = wp_get_related_posts();<br>$content = $content . $output;<br>}<br>return $content;<br>}<br>add_filter(‘the_content’, ‘wp_related_posts_attach’,100);

第二种

在所用主题的single.php添加,一般添加在<?php the_content(); ?>之后

<h3>Related Posts</h3><br><ul><br><?php<br>$tags = wp_get_post_tags($post->ID);<br>if ($tags) {<br>$first_tag = $tags[0]->term_id;<br>$args=array(<br>’tag__in’ => array($first_tag),<br>’post__not_in’ => array($post->ID),<br>’showposts’=>10,//Display 10 related posts<br>’caller_get_posts’=>1<br>);<br>$my_query = new WP_Query($args);<br>if( $my_query->have_posts() ) {<br>while ($my_query->have_posts()) : $my_query->the_post(); ?><br><li><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?phpthe_title_attribute(); ?>”><?php the_title();?> <?php comments_number(‘ ‘,'(1)’,'(%)’); ?></a></li><br><?php<br>endwhile;<br>}<br>}<br>wp_reset_query();<br>?><br></ul>

爱吧直接使用的第二种方法。