Вопрос или проблема
Показать записи, связанные с объектом записи ACF и пользовательским типом записи
У меня есть пользовательский тип записи под названием “команда”.
Я создал объект записи с помощью плагина ACF, который фильтрует по значению типа записи “команда”, и я нацеливаюсь на записи WordPress для местоположения.
Идея заключается в том, чтобы ассоциировать участников команды с записью WordPress.
Допустим, администратор создает новую запись, а затем выбирает “участника команды” из объекта записи.
Если пользователь посетит страницу одного участника, я хочу показать все записи, связанные с текущим посещаемым участником.
Насколько я понимаю, мне нужно использовать “meta_query” в $args записи и проверять, равен ли он текущему id записи, но я не могу заставить это работать.
Какой правильный способ реализовать эту функциональность?
Вы пробовали отношения ACF? Попробуйте это, если хотите установить связь между Командой и Участником Команды.
https://www.advancedcustomfields.com/resources/relationship/
Вот отличный пример – https://www.advancedcustomfields.com/resources/querying-relationship-fields/
Дайте мне знать.
Ответ или решение
Чтобы показать все записи, связанные с конкретным участником команды, используя ACF и пользовательские посты, вам нужно будет выполнить несколько шагов. Вот решение, которое поможет вам осуществить задуманное.
-
Создание объекта поста с ACF: Убедитесь, что вы создали поле типа "Post Object" в ACF, которое ссылается на ваш пользовательский тип поста "team". При этом вы выбираете посты, к которым можно будет привязывать участников команды.
-
Запись метаданных: Когда администратор создает новый пост и выбирает участника команды, ACF сохранит идентификатор выбранного участника в метаданных поста.
- Вывод связанных постов на странице участника: На странице с отдельным участником команды вам необходимо выполнить запрос к постам, фильтруя по метаданным, чтобы получить только те посты, которые связаны с текущим участником.
Вот пример кода, который поможет вам реализовать данное решение:
// Вставьте этот код в файл single-team.php или в соответствующий шаблон для участника команды.
if (have_posts()) :
while (have_posts()) : the_post();
// Получаем ID текущего участника команды
$current_member_id = get_the_ID();
// Подготовка аргументов для WP_Query
$args = array(
'post_type' => 'post', // Поменяйте на ваш пользовательский тип поста если нужно
'meta_query' => array(
array(
'key' => 'your_acf_field_key', // Замените на ключ вашего поля ACF
'value' => $current_member_id,
'compare' => '='
)
)
);
// Выполнение запроса
$posts_query = new WP_Query($args);
if ($posts_query->have_posts()) :
echo '<h2>Связанные посты:</h2>';
echo '<ul>';
while ($posts_query->have_posts()) : $posts_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile;
echo '</ul>';
else :
echo '<p>Нет связанных постов.</p>';
endif;
// Сброс после запроса
wp_reset_postdata();
endwhile;
endif;
Примечания:
- Убедитесь, что вы заменили
your_acf_field_key
на фактический ключ поля ACF, который вы используете для хранения идентификатора участника команды. - Код должен быть вставлен в соответствующий шаблон (например,
single-team.php
), чтобы он корректно отображал связанные посты при посещении страницы конкретного участника.
Заключение:
С помощью приведенного выше кода вы сможете успешно выводить все посты, связанные с текущим участником команды. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!