1

WordPress根据标签实现猜你喜欢

Posted by 撒得一地 on 2015年10月27日 in wordpress笔记

许多大型网站都有猜测喜欢的功能,特别是购物网站,因为它们根据用户的搜索习惯进行大数据统计,然后根据长期的统计去猜测用户可能喜欢哪些商品,这样的统计往往命中率极其高。然而,作为个人博客站长,我们很多时候没有这个能力也没有这个精力去进行网站大数据的搜集和统计。不过,我们依然可以根据文章标签的设定来简易的实现猜你喜欢这个功能。

我们知道,WordPress下每个标签都记录了相关文章列表。所以,当某个用户访问某篇文章时,你可以猜测这篇文章标签下的其它文章也是用户感兴趣的。

而且,我们还可以进一步完善这个功能,比如在发布文章时,文章标签设定要尽量符合文章的中心思想,而且要多维度的挖掘文章标签,因为一篇文章往往不止一个标签。当分类精准和文章增加后,命中率也会有所提高。

下面介绍代码实现方法:

方法一
首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章可能用户也会感兴趣。

<ul id="tags_related">

<?php
global $post;
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
  foreach ($post_tags as $tag) {
    // 获取标签列表
    $tag_list[] .= $tag->term_id;
  }

  // 随机获取标签列表中的一个标签
  $post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];

  // 该方法使用 query_posts() 函数来调用相关文章,以下是参数列表
  $args = array(
        'tag__in' => array($post_tag),
        'category__not_in' => array(NULL),  // 不包括的分类ID
        'post__not_in' => array($post->ID),
        'showposts' => 6,                           // 显示相关文章数量
        'caller_get_posts' => 1
    );

  query_posts($args);
  if (have_posts()) {
    while (have_posts()) {
      the_post(); update_post_caches($posts); ?>
    <li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
    }
  }
  else {
    echo '<li>* 暂无相关文章</li>';
  }
  wp_reset_query(); 
}
else {
  echo '<li>* 暂无相关文章</li>';
}
?>
</ul>

方法二:
该方法与上面那个方法思想一致,不同的是,在获取文章的时候是以SQL语句来直接读取数据库。

<ul id="tags_related">
<?php
global $post, $wpdb;
$post_tags = wp_get_post_tags($post->ID);

if ($post_tags) {
    $tag_list = '';
    foreach ($post_tags as $tag) {
        // 获取标签列表
        $tag_list .= $tag->term_id.',';
    }

    $tag_list = substr($tag_list, 0, strlen($tag_list)-1);
  
     $related_posts = $wpdb->get_results("

        SELECT DISTINCT ID, post_title

        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 6");

 // 以上代码中的 6 为限制只获取6篇相关文章
// 通过修改数字 6,可修改你想要的文章数量
 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 {
      echo '<li>暂无相关文章</li>';
    } 
}
else {
  echo '<li>暂无相关文章</li>';
}
?>
</ul>
 

 

标签:

上一篇:

下一篇:

相关推荐

1 Comment

  • boke112导航说道:

    方法不错,其实这个好像一般都叫做相关文章。不过叫猜你喜欢感觉高大上一些

Comments are closed. Would you like to contact the author directly?
网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.