Support

Account

Home Forums General Issues How to make get_field() ignore the main wp query ?

Solved

How to make get_field() ignore the main wp query ?

    • AdamACF

    • February 12, 2019 at 1:12 am

    I have a filter applied to the main WP query via a load action (pre_get_posts) for all the admin pages in my website. It simply limits the edit (listing page) to show records created only by the specific user currently logged in.

    The problem is that this then stops ACF functions from working properly. I have a function called by another action that is loading via acf/init. The function queries a repeater field with get_field(). The value returned by get_field() is not the expected array but just integers. If I remove this filter code below the problem doesn’t occur.

    // 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 );
    }
    }
    }

    So my question is, it seems get_field is having my general edit page filter applied to it as well, so how to I make it not use the filtered query ?

    • AdamACF

    • February 13, 2019 at 6:25 am

    I resolved this by adding $wp_query->is_main_query() to my clauses before the set command runs.

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.

We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.