[WordPress教程]WordPress根据文章相关标签代码实现相关文章

  • 文章介绍
  • 评价建议
  • [WordPress教程]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 endwhile; else : ?>
    <li>* 暂无相关文章</li>
    <?php endif; wp_reset_query(); } ?>
    </ul>
    

    方法二:分类相关
    本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。

    <ul id="cat_related">
    <?php
    global $post;
    $cats = wp_get_post_categories($post->ID);
    if ($cats) {
    $args = array(
    'category__in' => array( $cats[0] ),
    '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 endwhile; else : ?>
    <li>* 暂无相关文章</li>
    <?php endif; wp_reset_query(); } ?>
    </ul>
    
    
    

    办法三:标签相关,SQL获取
    获取相关文章的原理与办法一相似,不过在获取文章的时分是以SQL句子来直接读取数据库,然后随机获取6篇相关文章记载,而不是WordPress的函数query_posts().

    <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 { ?>
    <li>暂无相关文章</li>
    <?php } } ?>
    </ul>
    

    办法四:分类相关,SQL获取
    获取相关文章的原理与办法二相似,不过在获取文章的时候是以SQL句子来直接读取数据库,然后随机获取6篇相关文章记录,而不是WordPress的函数query_posts().

    <ul id="cat_related">
    <?php
    global $post, $wpdb;
    $cats = wp_get_post_categories($post->ID);
    if ($cats) {
    
    $related = $wpdb->get_results("
    SELECT post_title, ID
    FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
    WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
    AND {$wpdb->prefix}term_taxonomy.taxonomy = 'category'
    AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
    AND {$wpdb->prefix}posts.post_status = 'publish'
    AND {$wpdb->prefix}posts.post_type = 'post'
    AND {$wpdb->prefix}term_taxonomy.term_id = '" . $cats[0] . "'
    AND {$wpdb->prefix}posts.ID != '" . $post->ID . "'
    ORDER BY RAND( )
    LIMIT 6");
    
    if ( $related ) {
    foreach ($related 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>
    

     

    Leave a Reply

  • 如本资源侵犯了您的权益,[email protected]!我们将在收到邮件的1个小时内处理完毕。

  • 本站仅为平台,发布的资源均为用户投稿或转载!所有资源仅供参考学习使用,请在下载后的24小时内删除,禁止商用!

  • OKMG(芒果源码)助力正版,如您有自己的原创产品,可以联系客服投稿,代理出售!

  • OKMG(芒果源码)客服QQ:29139260

  • OKMG(芒果源码)商务电话(仅对企业客户/个人用户请联系QQ客服):010-86463891

  • 请注意:本站不提供任何免费的技术咨询服务,为了节约时间,下载前 请确认自己会技术
  • 免责声明 芒果源码,一个精品商业网站源码分享平台 WWW.OKMG.CN 1. 本站所有资源来源于用户上传和网络,均不允许转载,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除! 3. 如发现会员转载本站资源文章,本站有权封禁会员账号! 4. 不得使用于非法商业用途,不得违反国家法律。否则后果自负! 5. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 6. 如有链接无法下载、失效或广告,请联系管理员处理! 7. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 8. 如遇到加密压缩包,默认解压密码为"www.okmg.cn",如遇到无法解压的请联系管理员! 9.本站客服:29139260

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: [email protected]),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系客服
    开通VIP 享更多特权,建议使用 QQ 登录