WordPress怎么实现相关文章功能?几种方法分享

轻晨酱_8711

轻晨酱_8711

2023-03-01

1495人浏览

转载

wordpress怎么实现相关文章功能?下面本篇文章给大家介绍一下wordpress代码实现相关文章的几种方法,希望对大家有所帮助!

WordPress很多插件可以实现相关文章的功能,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响,所以很多人还是比较喜欢用代码实现需要的功能,但是话又说回来了,代码实现也有缺点,就是配置复杂,不懂代码的人完全摸不着头脑或者只能照搬别人的代码,还不如用插件。

这里我整理编写了几种用代码实现相关文章的方法,这其中会详细标明各部分代码的作用,以及如何自定义你想要的功能,希望对大家有所帮助。开始之前,说明一点,以下所有方法输出的HTML代码格式都是以下形式,你可以根据需要进行修改:



方法一:标签相关

     首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。下面是实现的代码:


    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); ?>     
  • * " rel="bookmark" title="">
  • * 暂无相关文章';   }   wp_reset_query();  } else {   echo '
  • * 暂无相关文章
  • '; } ?>

     使用说明:"不包括的分类ID" 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开。因为这里限制只显示6篇相关文章,所以不管给  query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id,赋值给 tag__in 这个参数,获取该标签下的6篇文章。

方法二:分类相关

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


    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); ?>   
  • * " rel="bookmark" title="">
  • * 暂无相关文章';   }   wp_reset_query(); }else {   echo '
  • * 暂无相关文章
  • ';}?>

方法三:标签相关,SQL获取

     获取相关文章的原理与方法一相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().

Wordpress OAuth
Wordpress OAuth

启动并完成 WordPress.com OAuth 认证,通过 REST API 发布文章。适用于需要生成授权链接、交换授权码等场景。

下载

    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) {?>     
  • ID); ?>" rel="bookmark" title="post_title; ?>">post_title; ?>
  • 暂无相关文章';     } }else {   echo '
  • 暂无相关文章
  • ';}?>

方法四:分类相关,SQL获取

     获取相关文章的原理与方法二相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().


    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) {?>
  • * ID); ?>" rel="bookmark" title="post_title; ?>">post_title; ?>
  • * 暂无相关文章';   } }else {   echo '
  • * 暂无相关文章
  • ';}?>

方法五:作者相关

该方法是获取该文章作者的其他文章来充当相关文章,代码如下:


     $post_author,         'post__not_in' => array($post->ID),         'showposts' => 6, // 显示相关文章数量         'orderby' => date, // 按时间排序         'caller_get_posts' => 1     );   query_posts($args);   if (have_posts()) {     while (have_posts()) {       the_post(); update_post_caches($posts); ?>   
  • * " rel="bookmark" title="">
  • * 暂无相关文章';   }   wp_reset_query();?>

时间效率对比

     我们对以上各个相关文章代码执行时间进行测算,以便对以上各个的方法进行效率,给你的选择提供参考。以下是在同一篇文章中获取6篇相关文章,以上各方法最终测算的时间如下:

     方法一:0.18067908287048  秒
     方法二:0.057158946990967 秒
     方法三:0.037126064300537 秒
     方法四:0.045628070831299 秒
     方法五:0.023991823196411 秒

推荐学习:《WordPress教程》

相关文章

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

相关标签:

php wordpress

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

20

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

20

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

20

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

20

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

2026.11.04

0

15

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

40

18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习