私はワードプレスに不慣れで、テーマを作ることを通して私のやり方を学ぶことを試みています。今私は私のメニューを生成するのにwp_nav_menuを使っています
ただし、メニューのデフォルト生成は次のようになります。
<div id="navi">
<div class="menu-primary-container">
<ul id="menu-primary" class="menu">
<li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"></li>
<li id="menu-item-16" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16"></li>
<li id="menu-item-20" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20"></li>
<li id="menu-item-15" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-15"></li>
<li id="menu-item-17" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17"></li>
</ul>
</div>
</div>
LiとulからすべてのクラスとIDを削除したいです。私はしばらくグーグルしています。さまざまな方法を試してみたが、運が悪い。どんな助けでも大いに感謝されるでしょう。私は現在Wordpress 3.1を使っています
前もって感謝します!
wp_nav_menu()
function を見ると、アイテムは walk_nav_menu_tree()
によって書かれています。これは Walker_Nav_Menu
を呼び出して作業を行うためのものです)。 method start_el()
各メニュー項目に対して呼び出されます。この関数では、クラスがnav_menu_css_class
でフィルタリングされ、idがnav_menu_item_id
でフィルタリングされていることがわかります。したがって、これらのフックに独自のコードをアタッチするとあなたが欲しいものに。
サブメニュー 常にメインラッパーである<ul class="sub-menu">
でラップされています menu_id
およびmenu_class
引数 で変更できます。
nav_menu_item_id
およびnav_menu_css_class
フィルタフックを使用して、各項目のIDとクラスを次のように変更できます。
add_filter('nav_menu_item_id', 'clear_nav_menu_item_id', 10, 3);
function clear_nav_menu_item_id($id, $item, $args) {
return "";
}
add_filter('nav_menu_css_class', 'clear_nav_menu_item_class', 10, 3);
function clear_nav_menu_item_class($classes, $item, $args) {
return array();
}
これは<li id="" class="">
という項目になります。同じメカニズムを使用して、IDをページスラッグなどの便利なものに設定できます。
function wp_nav_menu_remove_attributes( $menu ){
return $menu = preg_replace('/ id=\"(.*)\" class=\"(.*)\"/iU', '', $menu );
}
add_filter( 'wp_nav_menu', 'wp_nav_menu_remove_attributes' );
この解決策は wp3layout に投稿されました。これをあなたのテーマのfunction.phpに追加してください。
関数remove_css_id_filter($ var){ return is_array($ var)? array_intersect($ var、array( '現在のメニュー項目')): ''; } add_filter( 'page_css_class'、 'remove_css_id_filter'、100、1); add_filter( 'nav_menu_item_id'、 'remove_css_id_filter'、100、1); add_filter( 'nav_menu_css_class'、 'remove_css_id_filter'、100、1);
お役に立てれば。