2017-11-02 9 views
0

私は自分のテーマをwordpressで構築しています。アクティブになっているときにメニュー項目に "active"というクラスを追加します。PHPでnavにクラス "active"を追加

<div class="top-nav"> 
      <ul class="memenu skyblue"> 
       <li class="active"><a href="index.php">Home</a></li> 
       <?php wp_list_pages('&title_li='); ?> 

私のfunctions.phpにこのコードを追加しました。

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2); 
function special_nav_class($classes, $item){ 
    if(in_array('current_page_parent', $classes)){ 
     $classes[] = 'active '; 
    } 
return $classes; 
} 

このコードでは、liにclass activeが追加されませんでした。誰がコードに間違っているのかを知っていますか?それとも、コードに追加する必要があるのでしょうか?

私はこれをしようとした場合、私はあなたがだけWalker_Nav_Menuことではなく、使用する機能によって呼び出されているnav_menu_css_classフックをフィルタリングしている間、あなたはwp_list_pages()機能を使用している。この出力

<ul class="memenu skyblue"> 
        <li class="active"><a href="index.php">Home</a></li> 
        <li class="page_item page-item-2 current_page_item"><a href="#">About</a></li> 
<li class="page_item page-item-13"><a href="#">Contact</a></li> 
+0

コードに問題がありますか? –

+0

それは働いていない、私は質問を編集します –

+0

明らかにこのコードには、あなたの問題は、その不完全されていない場合は、より多くあります。関数special_nav_classを宣言しますが、どこでも実行されていません。 – Chris

答えて

0

を取得(wp_list_pages)。

echoパラメータを指定してこの関数を使用すると、出力する代わりにHTML出力を返すことができます。次に、そのcssクラスを探し、それに応じて行動します。

$list = wp_list_pages('echo=0'); 
$list = str_replace('current_page_parent', 'current_page_parent active', $list); 
echo $list; 

注:にpreg_replaceと正規表現の使用量は良いアイデアだろう。

更新:ページのどれもが現在のページではありませんので、

activeクラスが追加されることはありません。マニュアルに従って:

以下のクラスは、メニュー項目、wp_list_pages(によって生成された、すなわちHTMLに<li> タグ)に適用されます。注意:wp_list_pages()および wp_page_menu()関数は、同じCSSクラスを出力します。

。current_page_itemこのクラスは、現在レンダリングされている静的ページに対応するメニュー項目の に追加されます。

.current_page_parentこのクラスは、現在レンダリング静的ページの階層的な親に に対応したメニュー項目に追加されます。

.current_page_ancestorこのクラスは、現在レンダリング静的 ページの階層祖先に対応 メニュー項目に追加されます。

これらのうちのどれも現在のページではないため、これらのページのどれも現在のページではないため、アクティブなクラスはそれらのいずれにも追加されません。

https://developer.wordpress.org/reference/functions/wp_list_pages/

+0

あなたのコードを追加しても、現在のページでまだ私のリストを取得してください。しかし、コードでは、リストアイテムに "アクティブ"クラスは追加されません。 –

+0

あなたの質問にコードの出力を追加できますか? –

+0

私の答えを更新しました。 –

関連する問題