Используйте поле таксономии ACF в качестве переменной в цикле нестандартного типа записей Wordpress - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь создать пользовательский запрос Wordpress, используя поле Advanced Custom Fields в качестве переменной в l oop.

Вариант использования: страница имеет пользовательский l oop на Это. Например, на странице о месте события внизу страницы отображается все oop событий (пользовательский тип записи). Я хочу, чтобы человек, создающий страницу, выбрал, какой тег события (таксономия тега на CPT) он хочет прикрепить к странице. Затем l oop запускается с этим полем, присоединяемым к запросу тега, используемому в качестве переменной.

Вот мой код:

            <?php if ( get_field('event_tag') ) : ?>

            <?php 
                $event_tag = get_field('event_tag');
                $args = array(
                    'post_type' => 'events',
                    'posts_per_page' => 3,
                    'tag_id' => $event_tag,
                    'meta_key' => 'event_start_date',
                    'orderby' => 'meta_value',
                    'order' => 'ASC',
                    'ignore_sticky_posts' => true
                );
            ?>
            <?php echo $event_tag; ?><!-- This is only here to check the variable -->

        <?php else : ?>

            <?php 
                $args = array(
                    'post_type' => 'events',
                    'posts_per_page' => 3,
                    'meta_key' => 'event_start_date',
                    'orderby' => 'meta_value',
                    'order' => 'ASC',
                    'ignore_sticky_posts' => true
                );
            ?>

        <?php endif; ?>

            <?php $secondquery = new WP_Query( $args ); 
                if ( $secondquery->have_posts() ) : while ( $secondquery->have_posts() ) : $secondquery->the_post(); ?>

Я все еще хочу отсортировать по дата события, таким образом, meta_key и orderby. Я не уверен, влияет ли это на это. Обратите внимание на пару вещей:

• Эта временная строка, повторяющая тег $ event_tag, выводит идентификатор тега (в данном случае 31).

• Я пытался обернуть этот tag_id в '', повторить его и т. Д. c. Но он просто ничего не отображает.

• Поскольку это запрос пользовательского типа записи, я не уверен, работает ли стандартный тег. Тег регистрируется следующим образом ... если это имеет значение.

    // Taxonomy / Tags
function taxonomies_events_tags() {
  $args = array(
    'hierarchical'  => false, 
    'label'         => __( 'Event Tags','taxonomy general name'), 
    'singular_name' => __( 'Event Tag', 'taxonomy general name' ), 
    'rewrite'       => true, 
    'query_var'     => true,
    'show_in_rest' => true
  );
  register_taxonomy( 'custom-tag', 'events', $args );
}
add_action( 'init', 'taxonomies_events_tags', 0 );

Что мне нужно изменить в моем запросе, чтобы отображать события в указанном теге, все еще упорядоченные по event_start_date?

Заранее спасибо.

1 Ответ

1 голос
/ 05 февраля 2020

Вам необходимо использовать налоговый запрос для получения событий из определенной категории. Предполагая, что переменная $ event_tag содержит идентификатор тега для термина таксономии, должен работать следующий фрагмент кода:

$args = array(
  'post_type' => 'events',
  'posts_per_page' => 3,
  'meta_key' => 'event_start_date',
  'orderby' => 'meta_value',
  'order' => 'ASC',
  'ignore_sticky_posts' => true,
  'tax_query' => array(
    array(
      'taxonomy' => 'custom-tag',
      'field'    => 'term_id',
      'terms'    => $event_tag
    )
  )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...