我们在最近给客户做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进行跳转就可以了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。