Показать записи, связанные с объектом записи ACF и пользовательским типом записи

Вопрос или проблема

Показать записи, связанные с объектом записи ACF и пользовательским типом записи

У меня есть пользовательский тип записи под названием “команда”.

Я создал объект записи с помощью плагина ACF, который фильтрует по значению типа записи “команда”, и я нацеливаюсь на записи WordPress для местоположения.

Идея заключается в том, чтобы ассоциировать участников команды с записью WordPress.

Допустим, администратор создает новую запись, а затем выбирает “участника команды” из объекта записи.

Если пользователь посетит страницу одного участника, я хочу показать все записи, связанные с текущим посещаемым участником.

Насколько я понимаю, мне нужно использовать “meta_query” в $args записи и проверять, равен ли он текущему id записи, но я не могу заставить это работать.

Какой правильный способ реализовать эту функциональность?

Вы пробовали отношения ACF? Попробуйте это, если хотите установить связь между Командой и Участником Команды.

https://www.advancedcustomfields.com/resources/relationship/

Вот отличный пример – https://www.advancedcustomfields.com/resources/querying-relationship-fields/

Дайте мне знать.

Ответ или решение

Чтобы показать все записи, связанные с конкретным участником команды, используя ACF и пользовательские посты, вам нужно будет выполнить несколько шагов. Вот решение, которое поможет вам осуществить задуманное.

  1. Создание объекта поста с ACF: Убедитесь, что вы создали поле типа "Post Object" в ACF, которое ссылается на ваш пользовательский тип поста "team". При этом вы выбираете посты, к которым можно будет привязывать участников команды.

  2. Запись метаданных: Когда администратор создает новый пост и выбирает участника команды, ACF сохранит идентификатор выбранного участника в метаданных поста.

  3. Вывод связанных постов на странице участника: На странице с отдельным участником команды вам необходимо выполнить запрос к постам, фильтруя по метаданным, чтобы получить только те посты, которые связаны с текущим участником.

Вот пример кода, который поможет вам реализовать данное решение:

// Вставьте этот код в файл 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), чтобы он корректно отображал связанные посты при посещении страницы конкретного участника.

Заключение:

С помощью приведенного выше кода вы сможете успешно выводить все посты, связанные с текущим участником команды. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...