Support

Account

Home Forums General Issues Relationship: Pull in "related from"?

Solving

Relationship: Pull in "related from"?

  • “Projects” are related to “Employees.” I set the UI on the “Project” so when I add the Project post, I select the Employees (many) that it’s related to.

    On the “Employees” single I need to “pull in” all of the “Projects” that are related to it.

    I know this can be done if I add the relationship UI on the “Employees” post, but I want to add the related posts from the other end.

    Is this possible?

  • I’ve tried the code below, and it pulls in my 5 most recents posts???

    For this, I have a CPT of “Stories.” From “Posts” (standard WordPress posts) I select the Story I want to relate it to.

    The code below is from my stories-single.php

    <?php
    $args = [
    	'post_type' => 'post',
    	'meta_query' => [
    		'key' => 'related_stories',
    		'value' => '"' . get_the_ID() . '"',
    		'compare' => 'LIKE',
    	]
    ];
    
    $related_posts = get_posts($args);
     ?>
    <ul>
       <?php foreach($related_posts as $some_post):?>
    <li>
    <?php echo $some_post->post_title;?>
    </li>
    
       <?php endforeach; ?>
       </ul>
  • Not sure what the question is in your second comment but you answered you first question with the second comment. Do you still need help with this?

  • @hube2 I’m using the code in my comment, but the problem is that it’s simply pulling in 5 (seemingly) random posts.

    For example, I just created brand new “Story” and my single-story.php (with the code in the comment) is pulling 5 posts, even though there are no posts related to that story…

  • Set “posts_per_page” to the number that you want, -1 if you want them all. As far as random goes, with the query you’re doing it should be pulling them in reverse date order, if they are random then you have a pre_get_posts filter somewhere causing it.

  • @hube2

    What I mean by “random” is that it’s pulling in posts that shouldn’t even be there….

    I created a new “Story” and NO posts are related to it, and it’s still pulling in posts… url.com/my-new-story should be completely blank, but those posts are still being echoed….

  • Your theme or WP may be showing “Sticky Posts”, do you use this feature on your site?

    I think you can add 'ignore_sticky_posts' => 1, to the query arguments to prevent them from being shown.

  • @hube2 I get the same results with ignore_sticky_posts.

    I also get the same thing by activating twentynineteen so I am starting to wonder if I screwed up the relationship in ACF, though I don’t know how that would be.

  • The only thing I can think of is that there is another field with the same name

  • @hube2

    Hmm… There has to be something going on with my logic because even if I change the key to a non-existing one, it produces the same result (pulling in 5 posts that aren’t related).

    If I change the post_type to story, it pulls in 3 stories, when there is no relation between stories and stories…

    <?php
    $args = [
    	'post_type' => 'post',
        'ignore_sticky_posts' => 'true',
    	'meta_query' => [
    		'key' => 'the_related',
    		'value' => '"' . get_the_ID() . '"',
    		'compare' => 'LIKE',
    	]
    ];
    
    $related_posts = get_posts($args);
     ?>
    <ul>
       <?php foreach($related_posts as $some_post):?>
    <li>
    <?php echo $some_post->post_title;?>
    </li>
    
       <?php endforeach; ?>
       </ul>
    
    
  • Yes, there is, and I should have seen it sooner, more than likely I didn’t see it because of the shorthand array syntax which I don’t use. The meta query needs to be a nested array

    
    'meta_query' => [[
    		'key' => 'the_related',
    		'value' => '"' . get_the_ID() . '"',
    		'compare' => 'LIKE',
    	]]
    

    or the way I would write it`
    ‘meta_query’ => array(
    array(
    ‘key’ => ‘the_related’,
    ‘value’ => ‘”‘ . get_the_ID() . ‘”‘,
    ‘compare’ => ‘LIKE’,
    )
    ),
    `

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

You must be logged in to reply to this topic.