Wordpress'Order By'无效

时间:2017-03-21 15:44:50

标签: php wordpress

首先,我花了大约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);

我没有结果

1 个答案:

答案 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 ”,还必须指定类型,否则它将按字符串排序。