首先,你应该停止使用query_posts()
. As said in the documentation:
注意:此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。
您可以在中找到更全面的解释this answer by @Rast.
对于新循环,正如您在问题描述中所做的那样,最好使用WP_Query
class. 使用此类,您可以使用cat
参数从特定类别获取帖子并合并meta_key
(或meta_query
) 具有order
和orderby
参数按自定义字段排序。如果自定义字段是由ACF或任何其他方式创建的,则不需要,只需要元字段的键。
$args = array (
\'cat\' => \'122,123,124\',
// Change the_identifier_key_of_the_field with the identifier of your field
\'meta_key\' => \'the_identifier_key_of_the_field\',
// Set order to ASC or DESC
\'order\' => \'ASC\',
// Use \'orderby\' => \'meta_value_num\' for numeric meta fields
\'orderby\' => \'meta_value\',
);
$query = new WP_Query( $args );
if( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
?>
<a href="<?php the_permalink(); ?>"><?php the_title (); ?></a>
<?php
}
}
// Reset original post data after the secondary loop
wp_reset_postdata();