ここ SOW と他の場所の両方で、多くの人が私とまったく同じ問題を抱えています。
BBpress プラグインを自分のサイトにインストールしました ここ. このプラグインは、サイトで FORUM を有効にします。
フォーラムのサブメニュー項目が選択されたときに、プラグインが間違ったメニュー項目を強調表示するというこの文書化された問題について、私は何日も (無駄に) 格闘してきました。代わりに、ブログ メニュー項目がデフォルトで強調表示されます。
確認してください: [フォーラム] をクリックすると、この結果のページで [フォーラム] メニュー項目が強調表示されます。ただし、[フォーラムのテスト] をクリックすると (または他のフォーラム アイテムにドリルダウンすると)、結果のページで常に [ブログ] が強調表示されます。
これが私がこれまでに知っていることです:
- CSSだけでは解決できません。
- パーマリンクを使用しています(「投稿名」を選択)
- PHP は、ナビゲートしたページに基づいて、
.current-menu-item
および/またはクラスを (対応するおよびクラス.current_page_item
と共に) メニュー項目に割り当てます。何らかの理由で、フォーラムのサブメニューを現在のページとして表示できません。その結果、現在のページ アイテムとしてデフォルトで「ブログ」が設定されています。-ancestor
-parent
- だから私は次のことをする必要があることを知っています:
- 各ページの読み込み時にWordpressにURLをチェックさせる
"/forums/"
が URL の一部である場合は、すべて.current-menu*
の.current_page*
クラスを削除します(祖先/親クラスを削除するには、ワイルドカードが必要です)。.current-menu-item
次に、.current_page_item
クラスを"Forum"
メニュー項目に割り当てます。
問題は、私は近づいていると思いますが、これを行う方法が正確にわからないことです。
私はたくさんのことを試しました。
このJquery ソリューションを見つけましたが、実装方法がわかりません。また、このアプローチに自信がありません。
// First add a “forum-class” to your forums menu item in your custom menu
// Then add this to your js file with YOURURL = the url of your site and forums = your forums slug :
$(function() {
var forumURL = window.location.href.indexOf("YOURURL/forums/");
if(forumURL > -1){
$('li.forum-class').addClass('current-menu-item');
}
});
その後、私が望んでいたものに近いと思われるこのアプローチを見つけましたが、新しいクラスが導入され、Blog メニューから間違ったクラスがクリアされないようです。さらに、このコードを正確に配置する場所や、js ファイルを作成する場所がわかりません。
if (strtolower($thats_all->post_title) == "forum" || strtolower($thats_all->post_title) == "forums") {
$addclass = ' class="current_page"';
} else {
$addclass = '';
}
最後に、これは私が必要だと思うものを見つけましたが、実装に問題があります (私はそれを私のものに貼り付けようとしましたが、うまくいきませんでした)。menu-primary.php
header.php
// this forces the class current-menu-item to a menu item which I named 'forums'
add_filter('nav_menu_css_class', 'remove_link_parent_menu_classes', 420 ,3);
function remove_link_parent_menu_classes($classes, $item, $args){
if(strpos($item->url, '/forums/') !== true)
return array_diff($classes, array('current_page_item', 'current-menu-item'));
return $classes;
}
私は近いと思います。本当に近い。正しい方向へのプッシュが必要です。私は知る必要がある:
- 上記の後者のソリューションは機能しますか?
- コードを配置する必要があるのは、どのファイルで、ファイル内の正確な場所ですか?
ありがとう!