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

fid*_*nik 4 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' );
Run Code Online (Sandbox Code Playgroud)

对于布尔值:

  • 如果我只是调用存在的“cat_sticky_enabled”,我会得到一个很好的结果(所有已检查的帖子)。
  • 如果我只是调用不存在的“cat_sticky_enabled”,我会得到一个很好的结果(所有未经检查的帖子)。
  • 如果我同时打电话,我有所有的帖子,但无法正确排序(尝试过meta_value和meta_value_num):/

预先感谢您的答复。我丢失了一些东西,但我找不到它:/

编辑:对不起,我的代码是“OR”,而不是“AND”

fid*_*nik 5

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

如果它可以帮助某人:

$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' );
Run Code Online (Sandbox Code Playgroud)