2015-06-05 95 views
0

我有一個名爲trailer_type的定製分類,術語爲longshort。當訪問my_site/trailers/short(頁面搭載模板taxonomy-trailer_type.php)我顯示我的分類術語是這樣的:定製分類術語頁面中的當前分類項目頁面

$terms = get_terms('trailer_type'); 
if (! empty($terms) && ! is_wp_error($terms)) { 
    echo '<ul>'; 
    foreach ($terms as $term) { 
     echo '<li><a href="' . get_term_link($term) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $term->name . '</a></li>'; 
    } 
    echo '</ul>'; 
} 

效果很好,但有一個簡單的方法來添加一個「電流」類?例如,如果我在「長」頁面,我需要「長」在這個菜單中有「當前」類。

回答

4

您需要查看查詢的對象。有幾種方法可以做到這一點,我傾向於使用:$wp_query->queried_object - 顧名思義,這返回查詢對象。

在你的情況,這樣的事情應該工作:

$curTerm = $wp_query->queried_object; 
$terms = get_terms('trailer_type'); 
if (! empty($terms) && ! is_wp_error($terms)) { 
    echo '<ul>'; 
    foreach ($terms as $term) { 
     $classes = array(); 
     if ($term->name == $curTerm->name) 
      $classes[] = 'current'; 
     echo '<li class="'. implode(' ',$classes) .'"><a href="' . get_term_link($term) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $term->name . '</a></li>'; 
    } 
    echo '</ul>'; 
} 

我只是設置類的數組爲將來的擴展。你也可以將它設置爲一個字符串。

+0

謝謝,但一個的var_dump()的$ wp_query-> queried_object項頁面上沒有返回值(my_site /拖車/短路/),只在存檔頁面(my_site/trailers /)。難道我做錯了什麼? – drake035

+2

@ drake035有些東西破壞了你的主要查詢,並且我幾乎可以肯定地說你正在某處使用'query_posts',或者你有一個使用'query_posts'的插件。 '$ wp_query-> queried_object'不能在分類頁面上返回任何內容,除非通過'query_posts'中斷了主查詢 –

+1

@ drake035進行測試以確保代碼正常工作,可能試着將上面的代碼(或者你的'var_dump')移動到模板文件的頂部,位於'get_header()'的下方。 @pieter是我認爲在這裏的正確軌道,它可能是一個'query_posts'或其他改變循環問題。將其移至頂端將在大部分這些更改趨於發生之前顯示。如果它確實有效,那麼你知道問題出在那裏和原來的位置之間。如果它仍然沒有,這個問題是在某個地方(不太可能)的標題。 – DACrosby

0

嘗試使用

get_query_var('term') 

,並檢查

if ($term->name == get_query_var('term')){ 
//make something 
}