多亏了@Pieter Goosen和@cybmeta的评论,我改变了在归档页面上订购帖子的方式,使用pre_get_posts
我希望我的归档页面首先显示自定义字段值为1且名为“premium”(我创建自定义粘性帖子的方法)的帖子,然后显示所有“普通”帖子。
我在函数中添加了以下行。php文件(编辑:added!is\\u admin(),如Pieter的评论所示):
function custom_archive_query($query) {
if ( is_post_type_archive(\'my-custom-post-type\') && $query->is_main_query() && !is_admin() ) {
$query->set( \'posts_per_page\', 8 );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'meta_key\', \'premium\');
$query->set( \'order\', \'DESC\' );
}
}
add_action(\'pre_get_posts\', \'custom_archive_query\');
使用它有点重要
$query->is_main_query()
在
if
-语句,否则任何其他类型的查询(例如WP菜单或最新帖子小部件)都不会显示任何内容。