@tbalero

Как получить цифру количества записей из поля Relationship field (ACF)?

На вордпресс-сайте:
- Создан произвольный тип записей “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”.

Например, есть запись “Steven Spielberg” (запись произвольного типа “producers”) и она с помощью кастомного поля “movies_of_this_producer” (кастомное поле типа Relationship field) связана с 5 записями: “Jaws”, “Jurassic Park”, “Schindler’s List”, “The Terminal”, “Bridge of Spies” (с 5 записями произвольного типа “movies”).

Сейчас для каждой конкретной записи произвольного типа “producers” необходимо получить цифру - количество записей произвольного типа “movies”, связанных с этой конкретной записью произвольного типа “producers” (связанных с помощью кастомного поля типа Relationship field “movies_of_this_producer”).

*То-есть в примере с записью “Steven Spielberg” (запись произвольного типа “producers”) - нужная цифра будет: 5, так как, исходя из примера, именно 5 записей произвольного типа “movies” связаны с записью “Steven Spielberg”.

Вопрос: Как получить для каждой записи произвольного типа “producers” - цифру количества записей произвольного типа “movies”, связанных с данной конкретной записью (связанных с помощью кастомного поля типа Relationship field (ACF)? Каким должен быть код для этого?
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 1
cesnokov
@cesnokov
<head>&nbsp;</head>
С "ACF" не игрался, но у всех логика одинаковая, проще всего сделать цикл в цикле:

<?php

$producers = get_posts(array(
	'numberposts' => -1,
	'post_type' => 'producers',
));

if($producers) {
	foreach($producers as $item) {
		$producer_id = $item->ID;
		$producer_name = $item->name;
		$producer_movies_count = get_producer_movies_count ($producer_id);
		echo $producer_name . ' – ' . $producer_movies_count . '<br>';
	}
}

function get_producer_movies_count ($producer_id) {
	$movies = get_posts(array(
		'numberposts' => -1,
		'post_type' => 'movies',
		'meta_key' => 'movies_of_this_producer',
		'meta_value' => $producer_id
	));
	$count = count($movies);
	return $count;
}

?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы