十一年专注,只做WordPress定制开发一件事

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

王超
2022-12-17
主题开发
1,166 次

我们在最近给客户做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日记主要承接WordPress主题定制开发PSD转WordPressWordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494 微信:18539976310

搜索

嘿,有问题找我来帮您!