我想将绘画内容类型按年份归档到2010年,然后是其他较旧的内容类型< 2010,我会有一个通用的“旧档案”链接来列出这些绘画。
我已经完成了第一部分:
wp_get_archives( array(
'post_type' => 'paintings',
'type' => 'yearly',
'limit' => 4 )
);
显示为: 2017年| 2016 | ...等
我想在一个标题链接中列出比2010年更早的画作。
答案 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年。
如果您想要撤销这些结果,可以使用format
和echo
参数并应用您的逻辑来显示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')
。
希望它有效并且可以帮助!