簡體   English   中英

WordPress自定義分類查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM