问题描述

如何按年份显示自定义帖子类型的档案月?

最佳解决方案

是的你可以。所有你需要的是为 wp_get_archives(); 做一个过滤器,所以它接受 post_type 参数:

function my_custom_post_type_archive_where($where,$args){  
    $post_type  = isset($args['post_type'])  ? $args['post_type']  : 'post';  
    $where = "WHERE post_type = '$post_type' AND post_status = 'publish'";
    return $where;  
}

然后调用:

add_filter( 'getarchives_where','my_custom_post_type_archive_where',10,2);

每当您想通过自定义帖子类型显示归档时,只需传递 post_type 参数:

$args = array(
    'post_type'    => 'your_custom_post_type',
    'type'         => 'monthly',
    'echo'         => 0
);
echo '<ul>'.wp_get_archives($args).'</ul>';

次佳解决方案

你不是,Wordpress 开发人员的官方线路是,自定义帖子类型不是要做正常的普通帖子的工作,如果你需要 post 档案的日期等,那么你没有正确的做事情,你最好使用帖子格式等。

自定义帖子类型适用于网络应用程序等,同时执行某些操作,例如设置用作不同名称的辅助或并行博客的自定义帖子类型,例如。博客 vs 新闻,具有相同的能力,不是该功能的意图,而是意味着其实施中产生的其他技术问题。

如果您仍然坚持这一点,只需使用自定义分类法和发布格式是不够的,您可以在 functions.php 中添加重写规则,并将某些 URL 中的年/月档案重定向到归档页面,然后检查自定义如果您在重写规则中指定了变量并加载其他模板,请确保在重写规则中设置适当的值。

第三种解决方案

编辑 – > 虽然这个答案仍然适用于< WP4.4,因为 4.4 自定义帖子类型的支持现在包含在 wp_get_archives()


终于有一个简单,快速和简单的解决方案为 WordPress 中的自定义帖子类型的基于日期的档案!这是一个长期存在的问题,在 WP Core Trac 中是 recorded here

它尚未解决,但 Trac 的一个贡献者已经发布了一个 simple plugin in GitHub,这将使您能够为 CPT 提供日期归档。

安装此插件或手动添加功能代码后,您可以为 CPT 案例使用归档:

<?php wp_get_archives_cpt( 'post_type=custom_post_type' ); ?>

注意这个新功能 wp_get_archives_cpt 与标准 wp_get_archives 相同,所以你可以使用它接受的任何常规参数。但是,它只是添加了能够添加自定义帖子类型名称参数的功能。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。