サポート » 使い方全般 » 特定のカスタムメニューでの属性追加

  • 解決済 lonlypop

    (@lonlypop)


    こんにちは。
    WordPressで作成しているカスタムメニューでメニューの「ナビゲーションラベル」と「タイトルの属性」を出力したいため、ネットで調べ下記の記述で表示されるようになりましたが、全てのカスタムメニューに適用されてしまいます。

    これを特定のカスタムメニュー(例メニュー名:footer_menu)のみ適用するにはどのような処理が必要でしょうか?

    add_filter('walker_nav_menu_start_el', 'description_in_nav_menu', 10, 4);
    
    function description_in_nav_menu( $item_output, $item ){
    	return preg_replace('/(<\/a>)/', "<p>{$item->description}</p></a>", $item_output);
    }

    何卒宜しくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    walker_nav_menu_start_el の第4引数では、 wp_nav_menu 関数で指定された引数を受け取ることが可能となっています。

    walker_nav_menu_start_el

    ※ ドキュメントでは、配列と記述されていますが、実際は以下の様なオブジェクトでの受け取りとなります。

    object(stdClass)#2198 (16) {
      ["menu"]=>
      object(WP_Term)#2201 (10) {
        ["term_id"]=>
        int(2)
        ["name"]=>
        string(4) "main"
        ["slug"]=>
        string(4) "main"
        ["term_group"]=>
        int(0)
        ["term_taxonomy_id"]=>
        int(2)
        ["taxonomy"]=>
        string(8) "nav_menu"
        ["description"]=>
        string(0) ""
        ["parent"]=>
        int(0)
        ["count"]=>
        int(2)
        ["filter"]=>
        string(3) "raw"
      }
      ["container"]=>
      string(3) "div"
      ["container_class"]=>
      string(0) ""
      ["container_id"]=>
      string(0) ""
      ["menu_class"]=>
      string(12) "primary-menu"
      ["menu_id"]=>
      string(0) ""
      ["echo"]=>
      bool(true)
      ["fallback_cb"]=>
      string(12) "wp_page_menu"
      ["before"]=>
      string(0) ""
      ["after"]=>
      string(0) ""
      ["link_before"]=>
      string(0) ""
      ["link_after"]=>
      string(0) ""
      ["items_wrap"]=>
      string(36) "<ul id="%1$s" class="%2$s">%3$s</ul>"
      ["depth"]=>
      int(0)
      ["walker"]=>
      string(0) ""
      ["theme_location"]=>
      string(7) "primary"
    }

    この受け取ったオブジェクトの値を用いて条件分岐させることで、特定のカスタムメニューのみ適用することが可能です。

    なお、管理画面のメニューの編集画面で入力したメニュー名で判定するには、$args->menu->name での判定となり、register_nav_menu で指定した location の値で判定したい場合は、$args->theme_location での判定となります。
    テーマ内の特定箇所のメニューということであれば、前者よりも後者での判定とする方が適切です。

    トピック投稿者 lonlypop

    (@lonlypop)

    jim912さま

    ご指南ありがとうございます。
    希望通りの処理を行うことができました。

    助かりました。

    ありがとうございました!

    トピック投稿者 lonlypop

    (@lonlypop)

    解決しましたので解決済みにします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「特定のカスタムメニューでの属性追加」には新たに返信することはできません。