WordPress 首页第 X 篇文章后插播随机文章

博客目前就是个自娱自乐的地方,没什么访问量,纯粹是折腾给自己看的。挂了些 VPS 的 aff 链接,其实主要是 BWH 的。那些纯粹是优惠信息的文章,默认不在首页显示。昨天突发奇想,让它们随机显示一篇在首页露露脸也好,说不定有需要的看上了呢?

于是就有了这篇文章。

需求:首页第二篇文章后随机显示一篇来自优惠信息分类的文章,更进一步,判断这个分类最近是否有新文章,有就显示最新的文章,没有才显示随机文章。

以前折腾过类似功能,现在弄起来不是很难。

WordPress The Loop 里面有个 $current_post 变量,可以取得当前文章的索引(序号)。『$current_post:(available during The Loop) Index of the post currently being displayed.』可以通过判断它的值,就可以实现将随机文章插入到第 X 篇文章后。

接着是判断最近(比如一周内)是否有新文章,这个也好实现。WordPress 3.7 版本后的 WP_Query 日期参数新增 date_query (array),通过这个参数,很方便就能获取指定分类指定时间内的文章。

下面是 index.php 实现参考代码:

<?php
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
'category__not_in' => 888,//排除分类id:888
'paged' => $paged
);
$wp_query = new WP_Query($args);//主循环

$week = date( 'W' );
$year = date( 'Y' );

$args_rand = array(
'category__in' => 888,//选择分类文章id:888
'posts_per_page' => 1,//每页显示一篇
'orderby' => 'rand'
);//888分类随机文章

$args_week = array(
'category__in' => 888,
'date_query' => array(//7天内文章
array(
'column' => 'post_date_gmt',
'after' => '7 days ago',
),
),
'posts_per_page' => 1,
'paged' => 1//只显示第一页
);//888分类一周内文章

$wp_query_week = new WP_Query( $args_week );//获取一周内文章

if ( $wp_query->have_posts() ) {
while ( $wp_query->have_posts() ) : $wp_query->the_post();
get_template_part( 'content', get_post_format() );
if ($wp_query->current_post == 1) {//第 2 篇文章后
if ( $wp_query_week->have_posts() ) {
while ( $wp_query_week->have_posts() ) : $wp_query_week->the_post();
get_template_part( 'content', get_post_format() );
endwhile;
wp_reset_postdata();
} else {
$wp_query_rand = new WP_Query($args_rand);
if ( $wp_query_rand->have_posts() ) {
while ( $wp_query_rand->have_posts() ) : $wp_query_rand->the_post();
get_template_part( 'content', get_post_format() );
endwhile;
wp_reset_postdata();
}
}
}
endwhile;
} else {
get_template_part( 'content', 'none' );
}
?>

注意:需要跟实际使用 WordPress 主题作相应修改。

WordPress 4.8.2 测试通过。

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/555/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

Redmi Note 9 4G 刷机欧洲EU版净化去广告

虽然口水苹果十三香,但是眼下囊中确实只有红米……到手不用 1000 大洋,试试也无妨,实在不行再找银行/东哥要十三香。 入手 Redmi Note 9 4G 缘由:领导的微信机 iPhone SE 一代确实很老了(再过两个月就开始第六个年头了),没有换过电池,进过水修过一次,现在经常尿崩突然就关机了得插上…

使用 GoAccess 分析 Nginx 日志

最近发现博客加载图片大多时候都是龟速,想过换服务器,换回主机(比如传说中的外贸主机 SiteGround),图片上 CDN……想了一圈,最终什么都没动,一是穷二是懒三是图片多茄大的水文并不多,先这样吧,实在不行再折腾。倒是忍不住折腾了一下 GoAccess 分析 Nginx 日志,分析了一圈,没什么用。 记录…
浏览: 40 标签:  ,  ,  , 

WordPress 纯代码实现彩色标签云及简单优化配置

WordPress 自带标签云小工具,侧栏直接添加即可,就是默认样式有点平淡,可以加点代码实现彩色标签云及简单优化一下。 WordPress 纯代码实现彩色标签云 代码丢到 WordPress 主题 functions.php 文件即可: //彩色标签云 tag cloudfunction theme_color_cloud_hook($text) { $text = preg_rep…
浏览: 119 标签:  ,  ,  ,  , 

WordPress 数据库常用 SQL 语句

WordPress 数据库存储了站点所有信息,数据库对站点来说至关重要,一般情况下不要折腾数据库。但是很多情况下,使用 SQL 语句批量修改站点内容,大大提高效率。下面 SQL 语句均收集自网络,操作需谨慎。所有的SQL语句都是假定你的数据库的前缀是"wp_" ,如果你使用不同的表前缀,请自行修改。 温馨…
浏览: 89 标签:  ,  , 
浏览: 68 标签: 

Comments:23

  1. 哈哈,目前你首页的前几篇文章都是折腾类……

    2017.09.23 17:51 # 回复
    1楼
  2. 这个功能不错,我是在feed里面排除了一些分类,首页的都显示的,先收藏。

    2017.09.25 08:27 # 回复
    2楼
  3. 6的飞起~~

    2017.09.26 16:42 # 回复
    3楼
  4. 我就不会玩这么高大上的,一般直接循环里插入一个模板,然后在模板里随机,可能连首页已显示的文章都不排除。

    2017.09.29 22:29 # 回复
    4楼
  5. 广告利器,收藏了,不过我那里历史日志几乎没人看。

    2017.10.03 09:23 # 回复
    5楼
  6. 爱生活,会折腾!

    2017.10.10 19:24 # 回复
    6楼
  7. 先收藏下,很能折腾哈。

    2017.10.20 23:59 # 回复
    7楼
  8. 噢,必须用来插播广告!

    2017.10.22 23:42 # 回复
    8楼
  9. 嗯。

    这个倒是有用。。。对于长期不更新的博客和网站,我看好多都在这么干

    2017.10.26 16:00 # 回复
    9楼

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息