获取指定文章类型的所有文章月份归档

我们在最近给客户做wordpress主题定制开发的时候,需要在列表页一个按照月份筛选的功能,同时还包含关键词的搜索筛选,考虑到用户体验,我们决定在当前分类列表模板页面直接进行多条件筛选,直接通过url传参来实现,而不是跳转到月份归档页或者是搜索结果页。页面效果图如下所示:

实现之前呢,我们一般都会去考虑wordpress有没有现成的方法或者函数能够实现,那么wordpress本身是有一个按照年度、月度、周、日等对文章进行归档的函数wp_get_archives(),但是的这个只能实现点击对应月份直接跳转到对应月份的文章归档页,这样就不能关联用户所选择的分类以及输入的搜索关键词,所以并不能直接实现我们想要的效果

然后,我就去wordpress后台查看文章列表页的按时间筛选的HTML代码,然后去wordpress文件搜索相关的内容,功夫不负有心人,很容易就找到了,但是好像WP并没有直接定义成一个可通用的函数,所以就自己参考WP的代码定义了一个自定义函数,具体代码如下:

//获取指定文章类型的月份归档

//https://www.wp-diary.com

//wordpress日记

function mx_get_posts_months($post_type){

global $wpdb;

$months = array();

$months = $wpdb->get_results(

$wpdb->prepare(

"

SELECT disTINCT YEAR( post_date ) AS year,MONTH( post_date ) AS month

FROM $wpdb->posts

WHERE post_type = %s

AND post_status = 'publish'

ORDER BY post_date DESC

",

$post_type

)

);

return $months;//返回的数据格式array('202211','202212');

}

那么我们就可以把这个函数放到主题的functions.PHP中,然后调用这个函数获取到有文章的年月数据,通过循环输出成seclect下拉选项,然后使用js进行跳转就可以了。

相关文章

我们有时候在定制WORDPRESS主题的时候,由于菜单样式的要求我...
很多朋友在做wordpree主题制作的时候会经常遇到一个问题,那...
wordpress后台的模块很多,但并不是每个都经常用到。介绍几段...
从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出...
很多网友会遇到这样一个问题,就是WordPress网站上传图片、附...
对于经常要在文章中出现代码的IT相关博客,安装一个代码高亮...