如题,想写一个导航栏,导航栏的每个分类拥有一个气泡显示一周内更新的文章数量。
已知获取一个分类的全部文章数量是
<?php
$posts = get_posts( 'numberposts=-1&category=分类id1,分类id2,分类id3' );
echo count($posts);
?>
请问如何实现显示一周内发布文章的数量?谢谢..
大致效果类似于b站这样
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
好久没看到worpdress的问题了.
本人正好非常熟悉wordpress开发.
这是我写的函数.
由于使用到
date_query
, 所以这个只适用3.7+--
Update:
给
wp_query
添加一些参数进行优化.生成的sql,大概是这样的
如果数据比较大,建议使用上面sql,搭配$wpdb->get_var($sql).
记住要使用count(wp_posts.ID), 毕竟聚合函数开销小点
另外给你一个思路。
放到 functions.php 中
调用指定分类下指定数量的文章,分类ID编号可以在wordpress后台看到
指定数量的最新文章:
调用完成以后。你可以自己写一段代码,思路差不多是:需要设定一个制定时间,比如七天内这个分类出现的最新文章。wordpress默认应该是没有这个功能的。你可以在数据库查询,有多少内容,然后缓存到一个SQL表单,wordpress前台读取这个表单的数值。
或者说,给每个分类的提示数量设置一个基数(比如0)。然后读取,这个分类下面更新过多少文章(前提做好时间范围控制)然后在这个基数上面添加这个数值。
给你个参考,
调用
变量ID为分类的ID
一个残酷的事实就是:分类(category, 数据表中被归类为term的一种)是没有meta辅助数据的。
所以你不能像记录Post Meta一样,简单的把这个数目用一个函数记录在分类里,再用另一个函数调出来。这个做不到的。
可行的办法是:先用后台的计划任务,自己用
$wpdb
数据库操作类,构造SQL语句查询出这个个数。然后用wp_options
表缓存,每次前台展示时直接调用。需要的API包含:WordPress Cron, WordPress Options, Class/wpdb。
注:抱歉,其实是没时间写这个SQL(逃) 主要的思路是:查询posts + term_relationships两个表(JOIN关系需要考虑一下),筛选某个特定分类(term)下所有的post记录,按post类型(post)、发布状态(publish)和日期(>=特定日期)筛选,最后SELECT COUNT计数。