サポート » 使い方全般 » カスタムメニューのliのid名の変更について

  • 解決済 yuru

    (@yuru)


    カスタムメニューのliに付加されるidをカテゴリーのスラッグにすることは可能でしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • nobita

    (@nobita)

    こんにちは

    フィルタを使うと何とかなるかも、

    nav_menu_item_id

    トピック投稿者 yuru

    (@yuru)

    nobitaさま

    nav_menu_item_id

    ↑参考にさせていただいたのですが、使い方を調べてもわかりませんでした。
    もう少し、勉強してみます。

    KUCKLU

    (@kuck1u)

    こんにちわ、yuruさん。

    一応以下ソースコードで動いてはいます。
    使用中のテーマの functions.php に追加してみてください。

    /**
     * Filter the ID applied to a menu item's list item element.
     *
     * @since 3.0.1
     * @since 4.1.0 The <code>$depth</code> parameter was added.
     *
     * @param string $menu_id The ID that is applied to the menu item's <code><li></code> element.
     * @param object $item    The current menu item.
     * @param array  $args    An array of {@see wp_nav_menu()} arguments.
     * @param int    $depth   Depth of menu item. Used for padding.
     */
    function change_menu_item_id( $menu_id, $item, $args, $depth ) {
        if ( 'taxonomy' === $item->type ) {
            $url     = parse_url( $item->url );
            $path    = pathinfo( $url['path'] );
            $menu_id = preg_replace( '/\A(menu-item-)([0-9]+)\z/', '$1' . $path['filename'], $menu_id );
        }
    
        return $menu_id;
    }
    add_filter( 'nav_menu_item_id', 'change_menu_item_id', 10, 4 );

    nav_menu_item_id というフィルターフックは /wp-includes/nav-menu-template.php の 112行目辺りにあります。
    何をしているのはか、/wp-includes/nav-menu-template.php をご確認ください。
    また、/wp-includes/nav-menu-template.php はコアファイルですので、絶対に書き換えたりしないでください。

    また、li のクラス名を書き換えたい場合は、nav_menu_css_class というフィルターフックで書き換えが可能です。nav_menu_css_class も /wp-includes/nav-menu-template.php にありますので、詳細は /wp-includes/nav-menu-template.php をご確認ください。

    トピック投稿者 yuru

    (@yuru)

    KUCKLUさま

    時間はかかりましたが、ソースを読解して何とか思い通りに表示できました。
    ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタムメニューのliのid名の変更について」には新たに返信することはできません。