Support

Account

Home Forums Front-end Issues WP ACF relationship query

Helping

WP ACF relationship query

  • In my “Cases” post type, I have a ACF relationship field called “Work” where I connect “Cases” with the post type “Work”. One of the posts in “Work” is called “Branding”.

    What I’m expecting is to return all posts of the post type “Cases” which has a relationship with “Branding”.

    Anyone who has a clue of what’s wrong with the code?

    $case_args = array( 
        'post_type' => 'cases', 
        'posts_per_page' => -1, 
        'meta_key'      => 'work',
        'meta_value'    => 'branding',
        'orderby' => 'menu_order', 
        'order' => 'ASC'
     );
        
    $cases = new WP_Query( $case_args );    
    
    if( $cases->have_posts() ): while( $cases->have_posts() ) : $cases->the_post(); ?>

    Many thanks in advance!

  • You may want to refer to the ACF article on querying relationship fields.

    Relationship fields are storing an array of data, not names of items selected, so you’re usually finding them by ID. I’d find the ID of branding then adjust your query to something like:

    $brandingID = X; // replace X with the post ID of branding
    $case_args = array( 
        'post_type' => 'cases', 
        'posts_per_page' => -1, 
        'orderby' => 'menu_order', 
        'order' => 'ASC',
        'meta_query' => array(
          array(
            'key' => 'work',
            'value' => '"' . $brandingID . '"',
            'compare' => 'LIKE'
          )
        )
     );

    Depending on where you’re using these types of queries, you may want to adjust $brandingID in the query to something like a get_the_ID() call if you’re putting this query on each work post type as you’d understandably not want to hard code an ID in that type of instance and you’d want the ID to instead just reflect whatever the post type is you’re viewing.

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

You must be logged in to reply to this topic.