Я часами экспериментировал и исследовал, пытаясь найти способ заставить это работать, но мне просто не повезло.
Итак, у меня есть пара разных типов постов, которые нужно немного смешать. Позвольте мне попытаться объяснить это как можно яснее и экономнее.
Есть 2 настраиваемых типа сообщений: сообщения и кампусы. (это большой веб-сайт церкви с несколькими кампусами). Каждое сообщение сообщения будет иметь несколько строк повторителя, основанных на кампусах (через поле таксономии), и каждое сообщение кампуса будет пытаться захватить последнее сообщение сообщения и вытащить конкретную строку повторителя «кампуса» и те же значения полей из этой строки .
Раздел повторителя ACF для отдельного сообщения сообщения ... (мы выбираем одно из сообщений Campus, затем вручную вводим имя докладчика и URL-адрес сообщения)
Итак, в настоящий момент я нахожусь в единственном сообщении "Campus", пытаюсь запросить и получить последнее сообщение сообщения, которое работает. Но затем я пытаюсь настроить таргетинг и получить ТОЛЬКО значения определенной строки ретранслятора ВНУТРИ сообщения сообщения. Поля повторителя в сообщении - это поле «Выбор кампуса» (поле выбора на основе поля «Объект публикации» (в типе записи «кампус») и 2 различных текстовых поля.
Чтобы проиллюстрировать ... сообщение сообщения имеет следующие данные ретранслятора: Ряд ретранслятора 1: Выбор кампуса - Трой (сообщение), Спикер сообщения - Дэнни Кокс, URL сообщения - (URL А) Ряд ретранслятора 2: Выбор кампуса - Бирмингем (сообщение ), Диктор сообщения - Клифф Джонсон, URL-адрес сообщения - (URL-адрес B) ... и будет динамическое количество ретрансляторов для нескольких кампусов.
Итак, что я пытаюсь сделать, это следующее ... Внутри моего сообщения Campus - например, "Troy" - я хочу взять последнее сообщение Message, зайти в репитеры и найти строку со значением "Campus Select" . Я хочу вернуть динамик сообщения (Дэнни Кокс) и URL-адрес сообщения (URL-адрес A) ТОЛЬКО из этой строки. Мне ничего не нужно из других рядов.
В моем текущем "последнем сообщении" есть 2 строки повторителя, и вот мой текущий запрос:
<?php
$args = array(
'post_type' => 'messages',
'posts_per_page' => 1
);
$latestMessageQuery = new WP_Query($args);
if( $latestMessageQuery->have_posts() ) { ?>
<?php while ($latestMessageQuery->have_posts()) : $latestMessageQuery->the_post(); ?>
<?php if( have_rows('campus_message') ): ?>
<?php while( have_rows('campus_message') ): the_row(); ?>
<?php if( get_sub_field('campus_selector') == 'troy' ): ?>
<?php the_sub_field('message_speaker'); ?>
<?php else: ?>
<?php the_sub_field('message_speaker'); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php endwhile; ?>
<?php }
wp_reset_query();
?>
Для устранения неполадок я вручную пытаюсь получить значение «тройка» «селектор кампуса» вместо того, чтобы получать это значение динамически, исходя из моего текущего местоположения «кампуса» ...
Запрос возвращает оба: «Клифф Джонсон Дэнни Кокс» (так как у меня есть 2 строки повторителя).
Как я могу вернуть ТОЛЬКО: "Трой, Дэнни Кокс, url A" в моем запросе?
. . . == 'troy'
этим названием поста. Наконец, удалите соответствующий else, который дает тот же результат. Однако я бы посмотрел на пару альтернатив. 1) рассмотрите другую структуру или 2) используйте собственный запрос к БД (codex.wordpress.org/Class_Reference/wpdb) - person Nathan Dawson   schedule 08.09.2016