<ul id="xxx"> <li>* <a title="文章标题1" rel="bookmark" href="文章链接1">文章标题1</a></li> <li>* <a title="文章标题2" rel="bookmark" href="文章链接2">文章标题2</a></li> ...... </ul>
首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。下面是实现的代码:
<ul id="tags_related"> <?php $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" 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开。因为这里限制只显示6篇相关文章,所以不管给 query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id, 赋值给 tag__in 这个参数,获取该标签下的6篇文章。
方法二:分类相关
本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。
<ul id="cat_related"> <?php $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语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().
<ul id="tags_related"> <?php $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 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 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 $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>
方法五:作者相关
该方法是获取该文章作者的其他文章来充当相关文章,代码如下:
<ul id="author_related"> <?php $post_author = get_the_author_meta( 'user_login' ); $args = array( 'author_name' => $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); ?> <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>
时间效率对比
我们将用之前的一个php代码对以上各个相关文章代码执行时间进行测算,以便对以上各个的方法进行效率,给你的选择提供参考。以下是在同一篇文章中获取6篇相关文章,以上各方法最终测算的时间如下:
方法一:0.18067908287048 秒
方法二:0.057158946990967 秒
方法三:0.037126064300537 秒
方法四:0.045628070831299 秒
方法五:0.023991823196411 秒
相关推荐
支持文章自动生成缩略图,可以给文章设置默认缩略图。支持在文章内容页显示缩略图。 如果文章有缩略图,则会显示文章原缩略图。...4、支持文章内容显示缩略图,可在文章首段、尾段、中间、随机显示。
水淼·WordPress站群文章更新器v1.3.6.0破解版
auto-wordpress博客文章自动采集插件
自己在用的wordpress微信机器人插件,可同步wordpress文章内容,亲测可用!后台上传后按照说明设置。
文章配图:可以设置为关闭、背景颜色、背景图片、Pixabay API。 提取文章内容图片作为缩略图:当文章没有缩略图时,尝试提取文章内容里的图片作为缩略图。
wordpress实现随机文章 ralix曾发布过关于wordpress随机文章的相关插件的点评文章(“wordpress插件之随机文章类插件点评”),百度一下也能搜出很多其他纯代码的方式,大致代码如下: 复制代码代码如下: <?php ...
如果我们的网站发展到文章数量达到成千上万之后,很难记得以前是否发布过相同标题的文章,而 WordPress 默认相同标题的文章也是可以正常发布的,这样的话会对 SEO 优化非常不利,所以今天仙踪小栈就向大家推荐一款...
wordpress免登录文章发布接口, 支持千里外云管家Api文章发布,支持api自动生成文章 千里外云管家 1.简单易用 网站操作简单,新手很容易上手操作; 2.一键生成多篇文章 输入文章标题,一键批量创作指定文章标题...
WordPress很多插件可以实现相关文章的功能,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响,所以很多人还是比较喜欢用代码实现需要的功能,但是话又说回来了,代码实现也有缺点,就是配置复杂,不...
wordpress模板:大前端D8主题5.1版本 高级商业主题 最新版 资源来自网络,请购买正版支持作者
1、演示//www.juchake.com3、源码说明 最近很火的一款Wordpress商业模板,这是一款专门为淘客朋友设计的,也是很多朋友需要的,官方最新原版。该wordpress模板以灰色为主打,结构排版十分符合国人的浏览及实用习惯...
第二种情况,有的站长们可能拥有多个网站,一个网站要提取另一个WORDPRESS博客网站的最新文章。 2、使用说明: 提取器由两个文件组成,read-blog-new.php和outsite-insert.php,只需简单的两步即可部署完成。 第一步...
gggggghhhhhh开了空调群马路永久居留旅进旅退我某图考虑考虑咯摸摸可口可乐了可口可乐了看看监控墨迹
草根站长WP最新文章提取器为PHP源码,由两个文件组成,主要目的是针对wordpress站点,提取wp站点中随时更新的最新文章,有两种情况特别适用,第一种情况是网站的wordpress为子目录建站,网站首页为自制网页,为了...
WordPress抽奖插件,对一篇文章下的评论者进行随机抽签
WordPress3.4.2随机用户发布评论接口,支持wp3.4.2左右的版本。其他版本没测试 带火车头发布接口和模块,下载直接即可使用。
WordPress实现本地文章批量上传,上传为,txt,html,等格式的文章类型,经过测试5.3版本完全能够使用,并且上传速度很快,适合新站批量上传文章
BETHEME V25.1.9.1 WordPress 2022年最新版外贸独立站模板.rar
WordPress导航主题源码添加搜索自动索引百度热搜关键词插图1 文章内容元素样式调整 经典编辑器添加对应样式预览 网址块添加nofollow属性开关(基础设置) 添加全站图片灯箱 增加go跳转白名单(基础设置) 修复投稿成功后...