wordpress 中实现相关文章推荐

归档: 软件使用和配置 | 标签:

趁着假期给博客换了一个主题,根据自己的喜好改了若干地方。之前用的主题自带了相关文章的推荐,但是新的主题并没有这个功能,于是把原来主题中实现相关文章的部分拿来改改,下面的函数是主要的实现(放到主题目录下的functions.php 中):

/* return list of related posts */
function ou_wp_related_post($related_filter = 'tag')
{
    $ret = array();
    global $post;

    if ($related_filter == 'category')
        $matchby = get_the_category($post->ID);
    else {
        $matchby = wp_get_post_tags($post->ID);
        $related_filter = 'tag';
    }

    if ($matchby) {
        $orig_post = $post;

        $matchby_ids = array();
        foreach ($matchby as $individual_matchby)
            $matchby_ids[] = $individual_matchby->term_id;

        $my_query = new wp_query(array(
            $related_filter . '__in'    =>  $matchby_ids,
            'post__not_in'              =>  array($post->ID),
            'showposts'                 =>  5,
            'ignore_sticky_posts'       =>  1
        ));

        while ($my_query->have_posts()) {
            $my_query->the_post();
            $ret[] = '<a href="' . get_permalink() . '">' . get_the_title() . '</a>';
        }

        $post = $orig_post;
        wp_reset_query();
    }

    return $ret;
}

可选择使用目录还是标签作为相关文章的选择标准,结果保存在一个数组中并返回。然后在 single.php 中使用:

$ret = ou_wp_related_post();
if ($ret) {
    echo '<div class="related_post">
          <h3 style="margin-top:15px; margin-bottom:15px;">' . __('Related posts', THEME_NAME) . ' (' . count($ret) . ')</h3>
          <ul>';
    foreach ($ret as $i)
        echo '<li>- ' . $i . '</li>';
    echo '</ul>
          </div>';
}
发表于 2013年2月19日
本文目前尚无任何评论.

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>