首先,我花了大约3个小时阅读并尝试不同的解决方案,所以我想让你知道我没有直接提出这个问题。
我接管了一个网站,其中包含“自定义字段” - >“字段组”,为教师设置。
原始代码是:
query_posts(array(
'posts_per_page' => 15,
'post_type' => 'faculty',
'paged' => $paged,
'orderby' => 'menu_order',
'order' => 'ASC'
))
我用
替换了它$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'faculty',
'orderby' => 'meta_value_num',
'meta_key' => 'sort_field',
'order' => 'ASC',
'posts_per_page' => 100,
'paged' => $paged
);
$the_query = new WP_Query( $args );
尝试了一堆没有运气的变种。为了清楚起见,我的目标是向教师“字段组”添加排序,我的方法是添加一个名为“sort_field”的字段,在这里他们可以输入一个数字然后这个SQL查询将以正确的顺序返回结果。
以下是var_dump($ query-> request);
的结果"SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND ( wp_postmeta.meta_key = 'sort_field' ) AND wp_posts.post_type = 'faculty' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0 ASC LIMIT 0, 100"
编辑:
我尝试使用Jordi的链接重做我的方法
$posts = get_posts(array(
'post_type' => 'faculty',
'posts_per_page' => -1,
'meta_key' => 'sort_field',
'orderby' => 'meta_value_num',
'order' => 'ASC'
));
print_r($posts);
我没有结果
答案 0 :(得分:0)
由于其ACF列,您需要在查询中再次对其进行命名,并指定其类型。有点奇怪,但事实就是如此。要命名它,您可以使用适用于所有结果的“无聊”元查询条件。
$quoteRulesAgs = [
'post_type' => 'custompost',
'post_status' => 'publish',
'posts_per_page' => 200,
"meta_query" => array(
"rule_order_custom" => array(
"key" => "rule_order",
"compare" => ">=",
"value" => -100000,
'type' => 'numeric'
)
),
'orderby' => [
'rule_order_custom' => 'ASC'
]
];
使用' rule_order '排序不起作用,但是在我输入一些无意义的条件(rule_order列始终> 0)后,使用' rule_order_custom ”,还必须指定类型,否则它将按字符串排序。