2016-12-21 22 views
0

我有一個自定義的帖子類型(媒體文章),它使用了一些自定義字段,並且具有一個自定義分類標準(媒體文章類別)和該分類標準中的14個詞條。使用CPT歸檔模板輸出所有自定義文章沒有問題。WordPress定製分類法查詢

我也在側邊欄中列出了用於過濾自定義帖子(我使用自定義WP菜單小部件來製作列表)的術語的菜單。

我有一個用查詢設置的自定義分類模板。我能夠成功地顯示這些帖子的組合或者依靠它們自己的取決於哪些分類術語被放置在參數中。所以它按預期工作 - 如果我不需要使用過濾菜單。但是,當我嘗試使用分類術語菜單時,每個菜單項都顯示相同的內容。

我需要做的是讓每個分類術語在該菜單中僅顯示該術語的CPT。是的,我可以爲每個學期製作一個模板(全部14個模板!),但其中的樂趣在哪裏?此外,客戶可能會即時添加更多條款,因此需要適應新生成的條款。

實質上,我希望爲所有分類術語提供一個查詢/模板,以動態顯示任何分類術語被點擊的帖子。

任何人都可以幫助我把它推到一個新的水平?

這是目前顯示:

screenshot of current display with sidebar of custom taxonomies

這裏是我當前的查詢:

$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框架。

+0

以防萬一你不知道還有一個單獨的SO爲WordPress在http://wordpress.stackexchange.com/ – j08691

+0

我沒有,謝謝@ j08691。我是否必須刪除這一個才能將其張貼在那裏? – dcvon

+0

你可以發佈在 – j08691

回答

0

當你點擊taxonomie-menu-item時,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'); 
+0

謝謝你的回覆Andy。是的,它會進行默認篩選,但默認情況下它不會選取我的自定義字段。所以過濾工作,但它只顯示帖子永久鏈接,我沒有實際使用在我的佈局,因爲我們沒有使用單個帖子。所以我的問題是讓適當的過濾和自定義字段都一起工作。這有意義嗎?我在上面試過你的代碼,它也做同樣的事情。 – dcvon

+0

我編輯了我的原始帖子,以更正我正在使用的術語。我實際上是想通過分類TERM來過濾帖子。所以我有一個分類標準和這個定製稅中的14個條款,這些條款都按照上面的屏幕截圖在側欄菜單中列出。 – dcvon