Я пытаюсь создать страницу archive-custom.php для отображения списка с вкладками. Каждый пользовательский тип записи - это «сообщение», привязанное к таксономии, которая группирует и объединяет их в «серии». Таксономия содержит информацию о каждой серии, в том числе «тип серии» и графику для каждой серии.
Цель состоит в том, чтобы на странице отображался список всех «серий» типа «main» с графическим названием и названием таксономии. Нажав на «серию», вы попадете на страницу «серии» со списком всех «сообщений»
Я получил запрос на возврат большей части необходимой мне информации, на данный момент он просто возвращает дубликаты, потому что мой запрос неправильный. Он возвращает «серию» для каждого «сообщения», поэтому, если есть 4 «сообщения», я получаю эту «серию» 4 раза. Я знаю, что запрос нужно изменить.
У меня также была проблема с возвратом названия таксономии. В приведенном ниже коде он возвращает 2 разных способа - один работает, но возвращает имя таксономии внутри ссылки, что не нужно. Другой просто возвращает «массив», потому что мой синтаксис неправильный, и я не смог найти пример в кодексе Wordpress.
Я не очень знаком с запросами Wordpress, но мне кажется, что у меня есть дубликат запроса, который здесь не нужен.
<?php
//this initial query is returning the results for each message instead of returning just each series in the type "main"
$args = array(
'post_type' => 'messages',
'post_status' => 'publish',
//thanks to dmarco for pointing out this should use the meta_query instead
//not certain how to meta_query the attached taxonomy
'tax_query' => array(
array(
'taxonomy' => 'cpt_series',
'field' => 'series_type',
'terms' => 'main'
)
)
);
$series = new WP_Query( $args );
if( $series->have_posts() ) :
?>
<ul>
<?php
while( $series->have_posts() ) :
$series->the_post();
//get the custom taxonomy fields and assign them to var
//this query is to access the custom post type fields.
$types = get_terms( array(
'taxonomy' => 'cpt_series',
'hide_empty' => true,
));
foreach($types as $type) {
$image = get_field('series_graphic', 'cpt_series_' . $type->term_id . '' );
$seriesLink = get_term_link($type->term_id, $taxonomy = 'cpt_series');
//This title doesn't work - syntax is wrong
$seriesTitle = wp_get_post_terms('name');
if ( has_term( $type->term_id, 'cpt_series')) {
$seriesGraphic = $image['url'];
}
}
?>
<li>
<a href="<?=$seriesLink?>">
<?php
echo '<img src="' . $seriesGraphic . '" />';
echo $seriesTitle;
$seriesTitle = the_terms($post->ID, 'sermon_series', '');
?>
</a>
</li>
<?php
endwhile;
wp_reset_postdata();
?>
</ul>
<?php
else :
esc_html_e( 'No series available!', 'text-domain' );
endif;
?>
Это очень близко к тому, чтобы делать то, что я хочу, снова просто получать "серию"
для каждого «сообщения» вместо просто списка всех «серий» в типе «main». Хотелось бы знать, как правильно вернуть имя. Спасибо.