WordPressがアイテムを表示するためのメニューページを通る方法は、ウォーカーオブジェクトを使用しています。この場合、このオブジェクトの特定のクラスはWalker_Nav_Menuと呼ばれます。 wp-includes\nav-menu-template.php
で見つけることができます。
Walker_Nav_Menu
はかなりシンプルなクラスです。そこにリンクやメニュー構造がどのように構築されているかを見ることができます。関数start_el
およびend_el
は、メニュー項目の作成に使用されます。 start_lvl
およびend_lvl
は、ネストメニュー用です。このアプローチでは、主にstart_el
とend_el
を使用します。これらの関数で
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_el (&$output, $item, $depth = 0, $args = array(), $id = 0) {
// Copy all the start_el code from source, and modify
}
function end_el(&$output, $item, $depth = 0, $args = array()) {
// Copy all the end_el code from source, and modify
}
}
、$item
はこれであなたが応じて追加の内容を照会することができ、あなたのメニュー項目である:functions.php
親クラスとよく似た方法でWalker_Nav_Menu
を拡張するために、クラスを作成し、あなたに
必要に応じて、現在のメニュー項目に移動します。 start_lvl
とend_lvl
は含まれていませんが、上書きされなければクラスが自動的に親クラスのメソッドを継承するため、問題はありません。
次に、あなたのテーマファイルには、あなたがこのようwp_nav_menu呼び出すことができます。あなたが出力されますどのようなコード変更できるように、
wp_nav_menu(array(
'theme_location' => 'main',
'container' => false,
'menu_id' => 'nav',
'depth' => 1,
// This one is the important part:
'walker' => new Custom_Walker_Nav_Menu
));
WordPressは、カスタムクラスや関数を使用します。
私はカスタムウォーカーを使うよりも少ないコードでこれを行う方法を考え出しました:http://stackoverflow.com/questions/26079190/add-featured-image-to-wp-nav-menu-items/26079191 –
どのように違いbweteenトップレベルheadinと他の見出しを伝える?最高レベルの要素からタグを削除したいと考えています... –