Home › Forums › General Issues › 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.
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
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’,
)
),
`
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
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 Privacy Policy. If you continue to use this site, you consent to our use of cookies.