Home › Forums › ACF PRO › How to get the number of posts from Relationship field – for "reverse" posts?
– I have custom post type “producers”.
– And i have custom post type “movies”.
– I have relationship field “movies_of_this_producer”.
On the page of edit/creation new post of custom post type “movies”
*I have this relationship field “movies_of_this_producer” on the page of edit/creation new post of custom post type “movies”.
So, to display a list of related posts of custom post type “movies” on a single post page (of custom post type “producers”) (single-produsers.php template) – I use Reverse Query (like in this tutorial: http://www.advancedcustomfields.com/resources/tutorials/querying-relationship-fields/). And it’s work correctly.
1) Now I need to display on the main page (index.php template) list of posts of custom post type “movies”, with number of related “producers” posts (related via relationship field “movies_of_this_producer”).
2) And now I need to display on the main page (index.php template) list of posts of custom post type “producers”, with number of related “movies” posts (related via relationship field “movies_of_this_producer”).
– To solve the problem number1 (display on the main page list of posts of custom post type “movies”, with number of related “producers” posts), I use this code (and it’s work correctly):
<?php
$TESTrel_movies = new WP_Query( array(
'post_type' => 'movies',
'post__not_in' => array($post->ID),
'posts_per_page' => 5,
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_key' => 'movies_of_this_producer',
'offset' => 0,
) );
?>
<?php if( $TESTrel_movies ): ?>
<div class="content_block_wrap two_columns_right col-md-6">
<div class="content_block transparent_block_with_border">
<div class="block_title">
Title here
</div>
<ul>
<?php
while ( $TESTrel_movies->have_posts() ) :
$TESTrel_movies->the_post();
?>
<li class="content_item col-xs-12">
<a class="post_thumbnail" href="<?php echo get_permalink( $TESTrel_movies->ID ); ?>">
<?php echo get_the_post_thumbnail( $TESTrel_movies->ID, '90x60-thumb' ); ?>
</a>
<a href="<?php echo get_permalink( ); ?>"><?php echo get_the_title( ); ?></a>
Number of related posts: <?php
echo $movie_count = count(get_field('movies_of_this_producer'));
?>
</li>
<?php
endwhile;
?>
</ul>
</div>
</div>
<?php endif; ?>
<?php
wp_reset_postdata();
?>
– However, if I use analogical code to solve the problem number2 (display on the main page list of posts of custom post type “producers”, with number of related “movies” posts) – it’s work incorrectly (as a result I get a list of “producers” posts, but the values of the number of related “movies” posts – equals zero). Here is this code (that I try to use, but it’s work incorrectly):
<?php
$TESTrel_producers = new WP_Query( array(
'post_type' => 'producers',
'post__not_in' => array($post->ID),
'posts_per_page' => 5,
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_key' => 'movies_of_this_producer',
'offset' => 0,
) );
?>
<?php if( $TESTrel_producers ): ?>
<div class="content_block_wrap two_columns_right col-md-6">
<div class="content_block transparent_block_with_border">
<div class="block_title">
Title here
</div>
<ul>
<?php
while ( $TESTrel_producers->have_posts() ) :
$TESTrel_producers->the_post();
?>
<li class="content_item col-xs-12">
<a class="post_thumbnail" href="<?php echo get_permalink( $TESTrel_producers->ID ); ?>">
<?php echo get_the_post_thumbnail( $TESTrel_producers->ID, '90x60-thumb' ); ?>
</a>
<a href="<?php echo get_permalink( ); ?>"><?php echo get_the_title( ); ?></a>
Number of related posts: <?php
echo $producer_count = count(get_field('movies_of_this_producer'));
?>
</li>
<?php
endwhile;
?>
</ul>
</div>
</div>
<?php endif; ?>
<?php
wp_reset_postdata();
?>
I think that in this case – may need to use some kind of “Reverse” way (because “producers” posts – have “reverse” relationship with “movies” posts via relationship field “movies_of_this_producer”), but I don’t know how to do it.
Question: How to display on the main page (index.php template) list of posts of custom post type “producers”, with number of related “movies” posts (related via relationship field “movies_of_this_producer”)? (*it’s a problem number2, described in this topic)
Hi there,
You can achieve this by looking into this page: http://www.advancedcustomfields.com/resources/querying-relationship-fields/. On the last code example, you can see that you need to query the posts using get_posts(). It will be something like this:
<!-- TESTrel_producers -->
<?php
$TESTrel_producers = new WP_Query( array(
'post_type' => 'producers',
'post__not_in' => array($post->ID),
'posts_per_page' => 20,
'orderby' => 'title', //change it if you want to order by something else
'order' => 'ASC',
'offset' => 0,
) );
?>
<?php if( $TESTrel_producers ): ?>
<div class="content_block_wrap two_columns_right col-md-6">
<div class="content_block transparent_block_with_border">
<div class="block_title">
List of posts of custom post type “producers”, with number of related “movies” posts:
</div>
<ul>
<?php
while ( $TESTrel_producers->have_posts() ) :
$TESTrel_producers->the_post();
?>
<?php
$the_movies = get_posts(array(
'post_type' => array( 'movies' ), // uncomment it if you only want to get the result from movies post type
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'movies_of_this_producer', // name of custom field
'value' => '"' . get_the_ID() . '"', // matches exaclty "123", not just 123. This prevents a match for "1234"
'compare' => 'LIKE'
)
)
));
?>
<li class="content_item col-xs-12">
<a class="post_thumbnail" href="<?php echo get_permalink( $TESTrel_producers->ID ); ?>">
<?php echo get_the_post_thumbnail( $TESTrel_producers->ID, '90x60-thumb' ); ?>
</a>
<a href="<?php echo get_permalink( ); ?>"><?php echo get_the_title( ); ?></a>
<span class="sm">Number of related posts:</span> <?php
echo $producer_count = count($the_movies);
?>
</li>
<?php
endwhile;
?>
</ul>
</div>
</div>
<?php endif; ?>
<?php
wp_reset_postdata();
?>
<!-- TESTrel_producers end -->
I hope that helps.
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!
Accordions are a great way to group related information while allowing users to interactively show and hide content. In this video, Damon Cook goes in-depth on how to create an accessible accordion block using ACF PRO’s Repeater field.https://t.co/RXT0g25akN
— Advanced Custom Fields (@wp_acf) March 2, 2023
© 2023 Advanced Custom Fields.
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.