カスタムメニューのli要素にcurrentクラスを付けるというのは、
https://memocarilog.info/wordpress/6514
こちらの記事の2つ目を参考にarchive.phpでは付くようになったのですが、
このページ下のコメントにあるようにそこからのリンク先
single.phpにてクラスを付ける事ができません。
(このコメントの方(rio-erinさん)が修正したソースを使用してもできませんでした)
その後自分でも色々調べてnav-menu-template.phpの391行目のelseif文
elseif (
'post_type_archive' == $menu_item->type &&
is_post_type_archive( array( $menu_item->object ) )
)
こちらを
elseif (
'post_type_archive' == $menu_item->type &&
is_post_type_archive( array( $menu_item->object ) ) ||
is_singular( array( $menu_item->object ) )
)
にすればできるようになったのですが、これだとバージョンアップする度に
書き直さないといけません。
こういうのはfunction.phpにフックを記述するのがベストだと思っているのですがフックの要領を得ておりませんのでどうすれば良いか詰まっております。
メニューはheader.phpにwp_nav_menuテンプレートタグで作成。
<?php $args = array( 'menu' => 'global-navi', // 管理画面で作成したメニューの名前 'container' => '', // <ul>タグを囲んでいる<div>タグを削除 ); wp_nav_menu($args); ?>
生成されるコードは下記のようになります。現在は小説一覧のページを開いているのでそこにcurrentが付いています。
ホーム > 小説(archive-novel.php)
<ul> <li>ホーム</li> <li>告知</li> <li class="current">小説</li> <li>詩</li> </ul>
小説一覧ページから個別の記事(小説1)を表示するとcurrentが付かなくなります。
ホーム > 小説 > 小説1(single-novel.php)
<ul> <li>ホーム</li> <li>告知</li> <li>小説</li> /* single-novel.phpを表示した状態でここにcurrentをつけたい */ <li>詩</li> </ul>
追記2
それぞれ表示中ページの<li>にcurrentを付与したいと思ってます。
テンプレートがarchive-novel.phpの場合は下記コードで問題ないのですが、single-novel.phpの場合にcurrentが付与されなくなるのでその場合の書き方が知りたいです。
// クラスを削除して、表示中メニューに 'current' クラスを付与する
add_filter( 'nav_menu_css_class', 'remove_to_currentClass', 10, 2 ); function remove_to_currentClass( $classes, $item ) { $classes = array(); if( $item -> current == true ) { $classes[] = 'current'; } return $classes; }

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/16 09:04
退会済みユーザー
2017/09/16 14:41 編集
退会済みユーザー
2017/09/16 22:54
2017/09/16 23:43
退会済みユーザー
2017/09/17 03:02 編集
2017/09/17 03:10
退会済みユーザー
2017/09/17 03:20 編集