私はこれについてたくさん読んでいますが、解決策を見つけることができませんでした。
基本的に私はカスタムページタイプのアーカイブによって作成された動的ページに現在のメニュー項目を表示しようとしています。デフォルトのメニューコントロールは、現在のメニュー項目のCSSクラス名を追加しません。私はここで解決策を見つけました - http://bloggingsquared.com/blogging-tips/how-to-add-the-current-menu-item-css-class-to-a - ワードプレスメニューのカスタムリンク/
これはこんな感じです:
add_filter('nav_menu_css_class', 'AddCurrentMenuItemClass',1,2);
function AddCurrentMenuItemClass($classes,$item)
{
$link = site_url().$_SERVER['REQUEST_URI'];
if(strpos($link, $item->url) !== false)
{
$classes[] = 'current-menu-item';
}
return $classes;
}
私が抱えている問題は、Homeページ(これはカスタムメニュー項目です)が私がアクセスしているページと同様にハイライトされることです。 if文を次のように変更したとします。
if ( $link == $item->url )
それから、そのページではなくサブページでは動作します。
あなたは私がこれを整理するのを手伝ってもらえますか?私は正しい締め切りでクライアントプロジェクトに取り組んでいます...
私はWP 3.4.2にWooThemesプレミアムテンプレートを付けています:Whitelight
これはあなたがやりたいことです、
add_filter( 'wp_get_nav_menu_items', 'cpt_archive_menu_filter', 10, 3 );
function cpt_archive_menu_filter( $items, $menu, $args ) {
foreach ( $items as &$item ) {
if ( $item->type != 'custom' ) continue;
if ( get_query_var( 'post_type' ) == 'your-post-type' && $item->title == 'Title of Link' ) {
$item->classes []= 'class-name-your-want';
}
}
return $items;
}
上記はうまくいきますが、カスタムリンクにcurrent-menu-item
クラスが割り当てられるので、これが必要ではないはずです。