Зацикливание через пользовательскую таксономию в столбце и отображение пользовательских полей из сообщений

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

Как это делается самым эффективным способом?

Я думаю об использовании иерархии шаблонов: single-post- {slug} .php

В этом я получаю контент, используя:

<?php get_template_part( 'content', '{custom template}' ); ?> 

Поэтому в content-custom-template.php я сделаю цикл, который пройдет через все пользовательские таксономии.

Итак, как вы можете видеть, для этого потребуется 2 дополнительных файла шаблонов для каждой пользовательской таксономии, с которой я хочу это сделать (потому что мне нужна почта для каждой пользовательской таксономии).

Что мне нужно знать:

  • Есть ли более эффективный / лучший способ?
  • Как создать цикл для пользовательских таксономий в сообщении?

Solutions Collecting From Web of "Зацикливание через пользовательскую таксономию в столбце и отображение пользовательских полей из сообщений"

Вам понадобится настроить новый WP_Query в вашем content-*.php с правильными параметрами, чтобы отправить его в цикл.

 <?php $args = array( 'tax_query' => array( array( 'taxonomy' => 'recipes',. 'field' => 'slug', 'terms' => 'dessert' ))); $your_posts = new WP_Query( $args ); ?> 

Вы можете добавить любые другие параметры, которые вы хотите / нуждаетесь в этом запросе. Более подробную информацию о параметрах можно найти на странице WordPress Codex для WP_Query и добавить их в массив $args .

В моем примере WP_Query собирается посмотреть на таксономию recipes , он найдет recipes , посмотрев на слизь и найдет все сообщения со значением dessert .

После установки нового WP_Query вы отправляете его в цикл WordPress:

 <?php if ( $your_posts->have_posts() ) : while ( $your_posts->have_posts() ) : $your_posts->the_post(); ?> // Your Post Stuff Goes Here <?php endwhile; else: ?> <p>Sorry, there are no posts to display</p> <?php endif; ?> <?php wp_reset_query(); ?> 

Чтобы получить ваши пользовательские поля, я бы предложил написать функцию в вашем файле functions.php чтобы обработать это и вызвать его в цикле. Таким образом, если вы можете использовать его по всей теме с большей легкостью.

 <?php function my_custom_field( $id, $field_name ) { return get_post_meta( $id, $field_name, true ); } ?> 

Эта функция выполняет доступ к метаданным сообщения, ищет имя поля, которое вы указываете, и возвращает одно значение. Если есть несколько значений с использованием одного и того же ключа, то опустите true и вместо этого функция вернет массив, который затем вы можете использовать foreach() для его обработки.

Так, например, скажем, ваше пользовательское поле – 'mood' тогда вызов функции будет:

 <?php my_custom_field( $post->ID, 'mood' ); ?>