На вордпресс-сайте:
- Создан произвольный тип записей “producers”.
- Создан произвольный тип записей “movies”.
- Для возможности связи записей типа “movies” с записями типа “producers” создано кастомное поле “movies_of_this_producer” (кастомное поле типа Relationship field, созданное с помощью плагина Advanced Custom Fields www.advancedcustomfields.com/resources/relationship ).
Соответственно на странице создания/редактирования записей произвольного типа “movies” отображается кастомное поле “movies_of_this_producer” (кастомное поле типа Relationship field), в этом кастомном поле для конкретной записи типа “movies” есть возможность указать одну или несколько записей типа “producers” (то-есть указать "связь" конкретной записи типа “movies” с одной или несколькими записями типа “producers”).
В результате, на сайте есть корректная связь между записями типа “movies” и записями типа “producers”.
- *У записей типа “movies” - прямая связь с записями типа “producers” (так как кастомное поле “movies_of_this_producer” отображается на страницах создания/редактирования именно записей типа “movies”);
- *У записей типа “producers” - обратная ("reverse") связь с записями типа “movies”;
Например, есть запись “Steven Spielberg” (запись произвольного типа “producers”) и она с помощью кастомного поля “movies_of_this_producer” (кастомное поле типа Relationship field) связана с 5 записями: “Jaws”, “Jurassic Park”, “Schindler’s List”, “The Terminal”, “Bridge of Spies” (с 5 записями произвольного типа “movies”).
Для того, чтобы на странице конкретной записи произвольного типа “producers” (шаблон single-produsers.php) отобразить список связанных записей произвольного типа “movies” - использую обратный запрос ("Reverse Query"), как в этом мануале:
www.advancedcustomfields.com/resources/tutorials/q... . И это работает корректно.
1) Теперь нужно отобразить на главной странице (шаблон index.php) список записей произвольного типа “movies”, и для каждой конкретной записи произвольного типа “movies”, отображаемой в этом списке, нужно отобразить цифру количества записей произвольного типа “producers”, связанных с данной конкретной записью (связанных с помощью кастомного поля "отношения movies_of_this_producer" типа Relationship field).
2) И еще нужно отобразить на главной странице (шаблон index.php) список записей произвольного типа “producers”, и для каждой конкретной записи произвольного типа “producers”, отображаемой в этом списке, нужно отобразить цифру количества записей произвольного типа “movies”, связанных с данной конкретной записью (связанных с помощью кастомного поля "отношения movies_of_this_producer" типа Relationship field).
- Для решения задачи №1 (отобразить на главной странице список записей произвольного типа “movies” с цифрой количества связанных записей произвольного типа “producers”) использую данный код (и он работает корректно):
<?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();
?>
- Однако, если я использую аналогичный код, чтобы решить задачу №2 (отобразить на главной странице список записей произвольного типа “producers” с цифрой количества связанных записей произвольного типа “movies”) - этот код работает некорректно (в результате получаю список записей произвольного типа “producers”, но при этом цифра количества связанных записей произвольного типа “movies” - ошибочно равна нулю). Вот этот код (который пытаюсь использовать, но который работает некорректно):
<?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();
?>
Думаю, что в данном случае - возможно, требуется использовать какой-то "обратный" ("reverse") способ, потому что записи произвольного типа “producers” - имеют "обратную" ("reverse") связь с записями произвольного типа “movies” (связь через кастомное поле "movies_of_this_producer" типа Relationship field), но я не знаю, как сделать это.
Вопрос: Как отобразить на главной странице (шаблон index.php) список записей пользовательского типа “producers”, с цифрой количества связанных записей произвольного типа “movies” (связанных с помощью поля "movies_of_this_producer" типа Relationship field)? (* это задача №2, описанная в данном вопросе)