[英]WordPress custom taxonomy query
我有一個自定義帖子類型(媒體文章),它使用一些自定義字段,並具有一個自定義分類法(媒體文章類別)和該分類法中的14個術語。 我使用CPT存檔模板輸出所有自定義帖子沒有問題。
我在側邊欄中還有一個菜單,該菜單列出了用於過濾自定義帖子的術語(我使用自定義WP菜單小部件來創建列表)。
我有一個使用查詢設置的自定義分類模板。 我能夠成功地組合顯示或單獨顯示帖子,具體取決於在args中放置什么分類法術語。 因此,它可以按預期工作-如果我不需要使用過濾菜單。 但是,當我嘗試使用分類術語菜單時,每個菜單項都顯示相同的內容。
我需要做的是在該菜單中僅顯示該術語的CPT,每個EACH分類法術語。 是的,我可以為每個學期制作一個模板(共14個!),但是這樣做的樂趣何在? 另外,客戶端可能會在運行中添加更多的條款,因此需要容納新生成的條款。
從本質上講,我想為所有分類術語提供一個查詢/模板,該查詢/模板將動態顯示所單擊的任何分類術語的帖子。
誰能幫助我將其推向新的高度?
這是當前的顯示:
這是我當前的查詢:
$date = get_field('pub_date', false, false);
$date = new DateTime($date);
$args = array(
'post_type' => 'media_articles',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_key' => 'media_publication_date',
'orderby' => 'meta_value',
'order' => 'DESC',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'media-article-category',
'field' => 'slug',
'terms' => array( 'focus-on-the-lands' ), //
),
array(
'taxonomy' => 'media-article-category',
'field' => 'slug',
'terms' => array( 'the-local-story' ), //
),
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
?>
<div class="media-item">
<h2><a href="<?php the_field('media_url'); ?>" target="_blank"><?php the_title(); ?><i class="fa fa-external-link" aria-hidden="true"></i></a></h2>
<?php
echo '<p class="lol-media-date">Publication Date: ' . DateTime::createFromFormat('Ymd', get_field('media_publication_date'))->format('F j, Y') . '</p>';
echo '<p>' . get_the_term_list( $post->ID, 'media-article-topics', 'Tags: ', ', ' ) . '</p>';
echo '<p class="lol-media-description">' . get_field('media_description') . '<span class="lol-media-publication">' . get_field('media_publication') . '</span></p>';
?>
</div><!-- end .media-item -->
<?php
endwhile;
endif;
我正在使用Genesis Framework。
當您單擊一個分類法菜單項時,默認情況下,WordPress會過濾帖子。 我認為您不應該在這里使用自己的查詢,但是您可以修改默認查詢。
使用動作掛鈎pre_get_posts
更改主查詢。
function my_media_article_category_query( $query ) {
if ( is_tax( 'media-article-category' ) ) {
$query->set( 'meta_key', 'media_publication_date' );
$query->set( 'orderby', 'meta_value' );
$query->set( 'order', 'DESC' );
}
}
add_filter( 'pre_get_posts', 'my_media_article_category_query' );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.