将帖子存档到特定年份,然后为旧帖子提供通用存档选项卡

时间:2017-01-05 20:43:18

标签: wordpress

我想将绘画内容类型按年份归档到2010年,然后是其他较旧的内容类型< 2010,我会有一个通用的“旧档案”链接来列出这些绘画。

我已经完成了第一部分:

wp_get_archives( array( 
    'post_type' => 'paintings', 
    'type' => 'yearly', 
    'limit' => 4 ) 
);

显示为: 2017年| 2016 | ...等

我想在一个标题链接中列出比2010年更早的画作。

1 个答案:

答案 0 :(得分:1)

由于wp_get_archives()中没有偏移参数,您只需更改顺序即可。

 wp_get_archives( array( 
    'post_type' => 'paintings', 
    'type' => 'yearly', 
    'limit' => 4,
    'order' => 'ASC', ) 
 );

据我了解情况,年份的字母顺序按降序排列(默认值)。如果第一个存档年份是2006年,则order更改为ASC将显示:2006年,2007年,2008年,2009年。

如果您想要撤销这些结果,可以使用formatecho参数并应用您的逻辑来显示2009,2008,2007,2006。但这是另一个问题!

更新(来自评论)

您可以使用pre_get_post操作更改查询

add_action('pre_get_posts', 'so_41494855');

function so_41494855($query){

   if(is_post_type_archive('paintings') && $query->is_main_query()){
       $before = '2009-12-31';
       $after = '2006-01-01';
       $date_query = array(
           'before' => $before,
           'after' => $after
       );
       $query->set('date_query', $date_query);
       $query->set('posts_per_page', '15');
   }
   return $query;
}

您将找到WP_Query的所有详细信息和日期参数here以适应您的查询。

您需要使用特殊的归档链接检测此归档页面。我建议您查看add_query_var()和get_query_var(),并将添加到WP_Query可用的公共查询变量。

条件成为:

if(is_post_type_archive('paintings') && get_query_var('show-paintings') == 'older' && $query->is_main_query()){}

另一种思考方式可能是克隆自定义帖子类型以分隔新旧画作。检测存档页面和更改查询的条件将变为is_post_type_archive('older-painting')

希望它有效并且可以帮助!