WordPress如何调用关联文章

海外服务器 (624) 2015-11-26 14:42:14

相关原理:首先获取改篇文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。这里我们通过SQL语句来直接读取数据库,随机获取 10篇相关的文章记录。下面是实现的代码:

<h3>该文章的相关文章</h3>

<ul>

<?php

$all_tags = wp_get_post_tags($post->ID);

if ($all_tags) {

$tag_list = '';

foreach ($all_tags as $tag)

{

// 获取标签列表
$tag_list .= $tag->term_id.',';

}

$tag_list = substr($tag_list, 0, strlen($tag_list)-1);

$related_posts = $wpdb->get_results("

SELECT post_title, ID

FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy

WHERE {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id

AND ID = object_id

AND taxonomy = 'post_tag'

AND post_status = 'publish'

AND post_type = 'post'

AND term_id IN (" . $tag_list . ")

AND ID != '" . $post->ID . "'

ORDER BY RAND()

LIMIT 10");

// 以上代码中的 10 为限制只获取10篇相关文章

// 通过修改数字 10,可修改你想要的文章数量

if ( $related_posts ) {

foreach ($related_posts as $related_post) {

?>

<li><a href="<?php echo get_permalink($related_post->ID); ?>" rel="bookmark" title="<?php echo $related_post->post_title; ?>">

<?php echo $related_post->post_title; ?></a></li>

<?php } } else { ?>

<li>暂无相关文章</li>

<?php } } ?>

</ul>

THE END