使用布尔自定义字段对meta_query进行排序

时间:2019-06-22 10:16:46

标签: wordpress

我一直在等待数小时,以允许在带有布尔字段的存档页面上进行粘性发布。

如果我的字段不是布尔值(日期,数字> = 2或其他任何值),则一切正常,但是对于布尔值字段我什么也不能做。

这是我的代码:

$query->set( 'meta_query', array(
    'relation' => 'OR',
    array(
        'key' => 'cat_sticky_enabled',
        'compare' => 'EXISTS',
    ),
    array(
        'key' => 'cat_sticky_enabled',
        'compare' => 'NOT EXISTS'
    )
) );

$query->set( 'orderby', 'meta_value date' );
$query->set( 'order', 'DESC' );

对于布尔值:

  • 如果我仅调用存在的“ cat_sticky_enabled”,则结果会很好(所有选中的帖子)。
  • 如果我仅调用不存在的“ cat_sticky_enabled”,则结果会很好(所有未选中的帖子)。
  • 如果我都打电话给我,我将拥有所有职位,但无法正确排序(尝试使用meta_value和meta_value_num):/

预先感谢您的回答。我缺少了一些东西,但我找不到它:/

编辑:对不起,我的代码是“或”,而不是“与”

1 个答案:

答案 0 :(得分:0)

我终于解决了我的问题:)

如果它可以帮助某人:

$query->set( 'meta_query', array(
    'relation' => 'OR',
    'field_order' => array(
        'key' => 'category_sticky_post_enabled',
        'compare'   => 'EXISTS',
        ),
    'field_order_withnulls' => array(
        'key' => 'category_sticky_post_enabled',
        'compare' => 'NOT EXISTS',
        )
    )
);

$query->set( 'orderby', 'field_order_withnulls post_date' );
$query->set( 'order', 'DESC' );