ACF:如何让get_field()忽略主wp查询?

时间:2019-02-11 作者:AdamJones

我通过加载操作将过滤器应用于主WP查询(pre_get_posts) 对于我的网站中的所有管理页面。它只是将编辑(列表页面)限制为仅显示当前登录的特定用户创建的记录。

问题是这样会阻止ACF功能正常工作。我有一个由另一个操作调用的函数,该操作通过acf/init加载。此函数用于查询中继器字段get_field(). 返回的值get_field() 不是所需的数组,而是整数。如果我删除下面的此筛选代码,则不会出现问题。

// The filter code that shows only the current authors posts
add_action(‘pre_get_posts’, ‘query_set_only_author’);
function query_set_only_author( $wp_query ) {
    if( is_admin() && get_current_user_role()==”required_role” ) {
        if ( basename($_SERVER[‘PHP_SELF’])==”edit.php”){
            $wp_query->set( ‘author’, $current_user->ID );
       }
    }
}
所以我的问题是,似乎get\\u字段也应用了我的常规编辑页面过滤器,那么如何使其不使用过滤查询呢?

1 个回复
SO网友:AdamJones

在设置查询更新之前,我将wp\\u query->is\\u main\\u query()添加到我的子句中,从而解决了这个问题。Ie。。。

// The filter code that shows only the current authors posts
add_action(‘pre_get_posts’, ‘query_set_only_author’);
function query_set_only_author( $wp_query ) {
    if( is_admin() && get_current_user_role()==”required_role” && $wp_query->is_main_query() ) {
        if ( basename($_SERVER[‘PHP_SELF’])==”edit.php”){
            $wp_query->set( ‘author’, $current_user->ID );
       }
    }

相关推荐