2011-01-12 14 views
2

だから、同じようwp_nav_menuを呼び出した後:Wordpressでメニューを作成すると、リスト項目IDの番号の代わりにメニュー項目名が使用されますか?

<?php wp_nav_menu(array('menu' => 'Primary Menu')); ?>

私はで終わる:など、menu-item-2menu-item-1ようid S ...

<li id="menu-item-1"> 
<li id="menu-item-2"> 

にはいくつかの方法があります数字を代わりにページのタイトルに置き換えてください。

menu-item-1

menu-item-2menu-item-store、などとなり、menu-item-contactなり?

+0

? –

+0

この関数はwp-includes/nav-menu-template.phpにありますが、そのためのコアファイルは編集しません。私は何のためにIDが必要なのか尋ねてもいいですか? CSSフック? – AJJ

+0

ええ、ちょうどCSSフック。私はコアファイルを編集するつもりはなく、単にそれらを理解しようとしました。明らかに数値バージョンは正常に機能しますが、直感的ではなく、何がどのアイテムであるかを把握するために豊富なメモ/テーブルが必要です。 –

答えて

1

ワードプレスのnav_menu_item_idフィルタを使用してIDをフィルタリングする必要があります。これはnav-menu-template.php fileに適用されます。これは3つの引数をとりますが、2番目の引数はメニュー項目のタイトルを実際に取得し、ID属性に役立つものに変換する必要があります。ここでは、ワードプレス3.4.1で私のために働く、ということを行うための機能があります:

function custom_nav_menu_item_id($id, $item) { 
    $title = sanitize_title_with_dashes($item->title); 
    return 'menu-item-'.$title; 
} 

add_filter('nav_menu_item_id', 'custom_nav_menu_item_id', 10, 2); 

これはID属性(またはその他のHTML属性)のために使用可能な文字列にタイトルをサニタイズするために、別のWordPressの関数を使用しています。

この関数は、メニュー項目のタイトルを取得します。このタイトルは、管理者からメニューパネルで変更すると、投稿またはページのタイトルとは異なるものになります。

+0

ありがとう@ジェレミー。それでもアクセントと特殊文字を削除するには、[sanitize_title()](https://codex.wordpress.org/Function_Reference/sanitize_title)を追加するだけです。 'function custom_nav_menu_item_id($ id、$ item){ $ title = sanitize_title_with_dashes(sanitize_title($ item-> title)); 'menu-item - 'を返します。$ title; } ' – mica

0

@Jeremy答えに基づく:アクセントと特殊文字を削除するにはsanitize_title()を追加するだけです。より良いWPクリーニング用

function custom_nav_menu_item_id($id, $item) { 
     $title = sanitize_title_with_dashes(sanitize_title($item->title)); 
     return 'menu-item-'.$title; 
    } 
    add_filter('nav_menu_item_id', 'custom_nav_menu_item_id', 10, 2); 

/** take a look @ this gist and include it in your function.php * /私は/wordpress/wp-admin/nav-menus.phpで周りを探し始める必要があります推測している

関連する問題