使用PRE_GET_POST将orderby设置为自定义字段

时间:2018-04-15 作者:BitShredder

我正在使用ACF插件创建自定义字段,这些字段将应用于自定义帖子类型(项目)。在我的功能中。php文件我正在尝试使用pre\\u get\\u posts来使用自定义字段更改自定义post类型存档的顺序。

function apply_projects_query_filter ($query)
{
    if (is_admin()) {
        return $query;
    }

    if (is_archive() && $query->query_vars[\'post_type\'] == \'projects\' && $query->is_main_query()) {

        $query->set(\'orderby\', \'meta_value\');
        $query->set(\'meta_key\', \'project_status\');       
        $query->set(\'order\', \'DESC\');
    }

    return $query;
}
add_action(\'pre_get_posts\', \'apply_projects_query_filter\');
My project\\u status自定义字段的值可能为0或1。使用上面的代码根本不会返回任何结果。我做错了什么?

1 个回复
最合适的回答,由SO网友:BitShredder 整理而成

不知道确切原因,但通过使用meta\\u查询添加另一个过滤器,一切都开始工作了。现在,我只在自定义帖子类型存档中获取未设置project\\u update字段且按project\\u状态排序的帖子。这就是我想要的。

$meta_query = array(
    array(
       \'key\'=>\'project_update\',
       \'value\'=>\'1\',
       \'compare\'=>\'!=\',
    )
);

$query->set(\'meta_query\', $meta_query);

结束

相关推荐