カスタム投稿タイプとカスタム分類があります。各カスタム投稿タイプは、1 つの用語にのみ割り当てられます。カスタム分類法で用語ごとにメニュー エントリを追加しました。各メニュー エントリの後ろには、この用語に割り当てられたすべてのカスタム投稿を含む概要ページがあります。税関の投稿のいずれかをクリックすると、詳細ページが開きます。ただし、詳細ページを表示している場合、分類用語に対応するメニュー エントリはアクティブとしてマークされていません。私は何を間違っていますか?
質問する
4488 次
4 に答える
3
わかりました、私は私の問題に対して次の解決策を見つけました:
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item) {
global $naventries;
$naventries[$item->ID] = $item;
if($item->type == 'taxonomy') {
global $post;
$terms = get_the_terms($post->ID, $item->object);
$currentTerms = array();
if ( $terms && ! is_wp_error( $terms ) ) {
foreach($terms as $term) {
$currentTerms[] = $term->slug;
}
}
if(is_array($currentTerms) && count($currentTerms) > 0) {
$currentTerm = get_term($item->object_id, $item->object);
if(in_array($currentTerm->slug, $currentTerms)) {
$classes[] = 'current-menu-item';
}
}
}
return $classes;
}
しかし、まだ 1 つの問題が残っています。また、クラスcurrent-menu-ancestorを親要素に追加したいと考えています。経由で親要素の ID を$item->menu_item_parent
取得しましたが、この ID を使用して対応するメニュー エントリのクラスを変更する方法がわかりません。
于 2012-05-24T14:59:18.413 に答える
1
<script type="text/javascript">
// Active state if you have a pagetitle on the result page
var currentTitle = $('.header h2').html();
$('.nav ul.menu li').find(':contains('+currentTitle+')').parent().addClass('current-menu-item');
</script>
したがって、クラスを追加したいメニュー項目と同じ名前のページタイトルがある場合、私のソリューションは機能しますcurrent-page-item
。
もちろん、これを機能させるには jQuery をインストールする必要があります。
編集: これをアーカイブ分類ページのループの下に配置してください。
于 2012-08-01T12:47:29.930 に答える