wp_nav_menu()を使用してメニューツリーの一部/ブランチを表示します


109

WP Adminで次のようなメニューが定義されています。

代替テキスト

親ページにいるときはいつでも、すべての子リンクをサイドバーに表示できるようにしたいと思います。たとえば、ユーザーが「About Us」ページにいる場合、緑色で強調表示された4つのリンクのリストをサイドバーに表示します。

wp_nav_menu()のドキュメントを見て、リンクを生成する際の開始点として使用する特定のメニューの特定のノードを指定する組み込みの方法がないようです。

親ページによって作成された関係に依存する同様の状況のソリューションを作成しましたが、特にメニューシステムを使用するソリューションを探しています。任意の助けをいただければ幸いです。


2
したがって、メニュー全体をカスタムメニューとして維持したいが、アクティブなサブツリーのみを展開して表示するカスタムウォーカーを作成したいですか?このコードと同様ですが、wp_list_pagesの代わりにwp_nav_menuを拡張しますか?私は最近、似た何かをしたとのthats場合あなたが探しているもののコードを投稿することができ...
goldenapples

1
@goldenapples、それがまさに私が望んでいることです。コードを回答として投稿してもかまわないのであれば、とても感謝しています。
ジェセガビン

1
そのような明らかな便利な機能はまだ構築されていないのだろうか。これは、「CMS」を実行するすべてのサイトで非常に便利です。
-hakre

上記の問題または類似の問題を解決しようとしています。:別の方法として、私は、ここでは、CSSの解決策を考え出したstackoverflow.com/q/7640837/518169
hyperknot

回答:


75

これはまだ私の心にあったので、私はそれを再訪し、このソリューションをまとめました。それはコンテキストにそれほど依存していません:

add_filter( 'wp_nav_menu_objects', 'submenu_limit', 10, 2 );

function submenu_limit( $items, $args ) {

    if ( empty( $args->submenu ) ) {
        return $items;
    }

    $ids       = wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' );
    $parent_id = array_pop( $ids );
    $children  = submenu_get_children_ids( $parent_id, $items );

    foreach ( $items as $key => $item ) {

        if ( ! in_array( $item->ID, $children ) ) {
            unset( $items[$key] );
        }
    }

    return $items;
}

function submenu_get_children_ids( $id, $items ) {

    $ids = wp_filter_object_list( $items, array( 'menu_item_parent' => $id ), 'and', 'ID' );

    foreach ( $ids as $id ) {

        $ids = array_merge( $ids, submenu_get_children_ids( $id, $items ) );
    }

    return $ids;
}

使用法

$args = array(
    'theme_location' => 'slug-of-the-menu', // the one used on register_nav_menus
    'submenu' => 'About Us', // could be used __() for translations
);

wp_nav_menu( $args );

素敵なテクニック!これに関しておそらく何か質問してもいいですか?テンプレートにリストされているサブメニューページのコンテンツをどのように表示しますか?
ダニエル。トサバ

2
@ daniel.tosabaでは、サブクラス化するか、Walker_Nav_Menuクラスでフィルターを使用する必要があります。コメントのためにすべてのメニューのものが好きすぎる-それについて新しい質問をする?
ラースト


3
そのような素晴らしい答え。どうもありがとうございます。これは本当にWordPressのデフォルトオプションです。
-dotty

3
本当にすてきです。誰もが同じことを行うために、興味を持っているが、ページIDにより場合は、変更wp_filter_object_listにラインをwp_filter_object_list( $items, array( 'object_id' => $args->submenu ), 'and', 'ID' );
ベン

14

@goldenapples:Walkerクラスは機能しません。しかし、アイデアは本当に良いです。私はあなたの考えに基づいて歩行者を作成しました:

class Selective_Walker extends Walker_Nav_Menu
{
    function walk( $elements, $max_depth) {

        $args = array_slice(func_get_args(), 2);
        $output = '';

        if ($max_depth < -1) //invalid parameter
            return $output;

        if (empty($elements)) //nothing to walk
            return $output;

        $id_field = $this->db_fields['id'];
        $parent_field = $this->db_fields['parent'];

        // flat display
        if ( -1 == $max_depth ) {
            $empty_array = array();
            foreach ( $elements as $e )
                $this->display_element( $e, $empty_array, 1, 0, $args, $output );
            return $output;
        }

        /*
         * need to display in hierarchical order
         * separate elements into two buckets: top level and children elements
         * children_elements is two dimensional array, eg.
         * children_elements[10][] contains all sub-elements whose parent is 10.
         */
        $top_level_elements = array();
        $children_elements  = array();
        foreach ( $elements as $e) {
            if ( 0 == $e->$parent_field )
                $top_level_elements[] = $e;
            else
                $children_elements[ $e->$parent_field ][] = $e;
        }

        /*
         * when none of the elements is top level
         * assume the first one must be root of the sub elements
         */
        if ( empty($top_level_elements) ) {

            $first = array_slice( $elements, 0, 1 );
            $root = $first[0];

            $top_level_elements = array();
            $children_elements  = array();
            foreach ( $elements as $e) {
                if ( $root->$parent_field == $e->$parent_field )
                    $top_level_elements[] = $e;
                else
                    $children_elements[ $e->$parent_field ][] = $e;
            }
        }

        $current_element_markers = array( 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor' );  //added by continent7
        foreach ( $top_level_elements as $e ){  //changed by continent7
            // descend only on current tree
            $descend_test = array_intersect( $current_element_markers, $e->classes );
            if ( !empty( $descend_test ) ) 
                $this->display_element( $e, $children_elements, 2, 0, $args, $output );
        }

        /*
         * if we are displaying all levels, and remaining children_elements is not empty,
         * then we got orphans, which should be displayed regardless
         */
         /* removed by continent7
        if ( ( $max_depth == 0 ) && count( $children_elements ) > 0 ) {
            $empty_array = array();
            foreach ( $children_elements as $orphans )
                foreach( $orphans as $op )
                    $this->display_element( $op, $empty_array, 1, 0, $args, $output );
         }
        */
         return $output;
    }
}

使用できるようになりました:

<?php wp_nav_menu( 
   array(
       'theme_location'=>'test', 
       'walker'=>new Selective_Walker() ) 
   ); ?>

出力は、現在のルート要素とその子(子ではない)を含むリストです。Def:ルート要素:=現在のページに対応する、または現在のページの親または親の親であるトップレベルメニュー項目...

これは、元の質問に正確に答えるわけではありませんが、トップレベルのアイテムがまだあるため、ほとんど答えられません。トップレベルの要素をサイドバーの見出しとして使用したいので、これは問題ありません。これを取り除くには、display_elementをオーバーライドするか、HTMLパーサーを使用する必要があります。


12

こんにちは@jessegavin

ナビゲーションメニューは、カスタムの投稿タイプとカスタムの分類法の組み合わせで保存されます。各メニューは、カスタム分類(つまり、にあります)の用語(つまり、「About Menu」にありますwp_terms)として保存されます。nav_menuwp_term_taxonomy

各ナビメニュー項目は、のポストとして保存されているpost_type=='nav_menu_item'(つまり、「会社概要」で見つけ、wp_postsそれを持つ)です(中ポストメタとして保存された属性wp_postmetaを使用して)meta_keyの接頭辞_menu_item_*どこ_menu_item_menu_item_parentあなたのメニュー項目の親ナビゲーションメニューアイテムポストのIDです。

メニューおよびメニュー項目の間の関係は、に格納されているwp_term_relationships場所object_idに関連する$post->IDナビゲーションメニュー項目のと$term_relationships->term_taxonomy_idにまとめて定義されたメニューに関連するwp_term_taxonomywp_terms

私はそれをすることが可能であるかなり確信しているフックの両方を'wp_update_nav_menu'し、'wp_update_nav_menu_item'実際のメニューを作成するwp_termsと中関係の並列セットwp_term_taxonomywp_term_relationships、それは自分のナビゲーションメニューだとなり、サブナビゲーションメニュー項目を持つすべてのナビゲーションメニュー項目。

また、フック 'wp_get_nav_menus' (数か月前に行った同様の作業に基づいてWP 3.0に追加することをお勧めしますを使用して、生成されたナビゲーションメニューが管理者のユーザーによる操作のために表示されないようにします。同期がとてつもなく速くなり、データの悪夢を手にすることになります。

楽しさと便利なプロジェクトのように聞こえるが、それは私がデータを同期するものは、それがすべてのバグをアイロン掛けすることになるとPITAする傾向があるので、一部には、今取り組む余裕ができるよりも、もう少しコードとテストがある(と理由:)しかし、上記の情報で武装した私は、やる気があればWordPressプラグインの開発者が望めばそれをコーディングすることができました。

もちろん、コードを作成した場合、ここに投稿する義務があるので、今すぐ気づくでしょう。:-)


あなたが言っていることを私がフォローしているかどうかわかりません。ユーザーが現在いるページに関連する「サブメニュー」を表示するための読み取り専用ソリューションを探しています。同じことを話しているのでしょうか?-しかし、データベーススキーマについてのあなたのより深い説明に感謝します。
ジェセガビン

@jessegavin-はい、呼び出したい場合は、メニュー構造に密接に結合されているwp_nav_menu()ため、メニューを複製する必要がありwp_nav_menu()ます。もう1つのオプションは、wp_nav_menu()コードをコピーし、サブメニューとして表示するために必要な変更を加えることです。
MikeSchinkel

10

これはあなたが探していることをするべきウォーカー拡張です:

class Selective_Walker extends Walker_Nav_Menu
{

    function walk( $elements, $max_depth) {

        $args = array_slice(func_get_args(), 2);
        $output = '';

        if ($max_depth < -1) //invalid parameter
            return $output;

        if (empty($elements)) //nothing to walk
            return $output;

        $id_field = $this->db_fields['id'];
        $parent_field = $this->db_fields['parent'];

        // flat display
        if ( -1 == $max_depth ) {
            $empty_array = array();
            foreach ( $elements as $e )
                $this->display_element( $e, $empty_array, 1, 0, $args, $output );
            return $output;
        }

        /*
         * need to display in hierarchical order
         * separate elements into two buckets: top level and children elements
         * children_elements is two dimensional array, eg.
         * children_elements[10][] contains all sub-elements whose parent is 10.
         */
        $top_level_elements = array();
        $children_elements  = array();
        foreach ( $elements as $e) {
            if ( 0 == $e->$parent_field )
                $top_level_elements[] = $e;
            else
                $children_elements[ $e->$parent_field ][] = $e;
        }

        /*
         * when none of the elements is top level
         * assume the first one must be root of the sub elements
         */
        if ( empty($top_level_elements) ) {

            $first = array_slice( $elements, 0, 1 );
            $root = $first[0];

            $top_level_elements = array();
            $children_elements  = array();
            foreach ( $elements as $e) {
                if ( $root->$parent_field == $e->$parent_field )
                    $top_level_elements[] = $e;
                else
                    $children_elements[ $e->$parent_field ][] = $e;
            }
        }

        $current_element_markers = array( 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor' );

        foreach ( $top_level_elements as $e ) {

            // descend only on current tree
            $descend_test = array_intersect( $current_element_markers, $e->classes );
            if ( empty( $descend_test ) )  unset ( $children_elements );

            $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output );
        }

        /*
         * if we are displaying all levels, and remaining children_elements is not empty,
         * then we got orphans, which should be displayed regardless
         */
        if ( ( $max_depth == 0 ) && count( $children_elements ) > 0 ) {
            $empty_array = array();
            foreach ( $children_elements as $orphans )
                foreach( $orphans as $op )
                    $this->display_element( $op, $empty_array, 1, 0, $args, $output );
         }

         return $output;
    }

}

先ほどコメントで参照したmfieldsのコードに大まかに基づいています。現在の要素が(1)現在のメニュー項目、または(2)現在のメニュー項目の祖先であるかどうかを確認し、それらの条件のいずれかが真である場合にのみその下のサブツリーを展開する。これがあなたのために働くことを願っています。

これを使用するには、メニューを呼び出すときに「walker」引数を追加するだけです。

<?php wp_nav_menu( 
   array(
       'theme_location'=>'test', 
       'walker'=>new Selective_Walker() ) 
   ); ?>

ああ...あなたの質問を読み直したところ、最初は誤解していたことに気づきました。このウォーカーは、他のすべてのトップレベルメニュー項目を表示しますが、展開するだけではありません。これはまさにあなたが望んでいたことではありませんでした。それでも、このコードは任意の方法で変更できます。ループを見て$top_level_elements、を呼び出す前に独自のテストを追加してください$this->display_element
ゴールデンアップル

このクラスを取得して現在のサブページの深さを表示することは可能ですか?つまり.. 3つ以上のレベルの深さがある場合、3番目以降のレベルは現在の(サブ)ページに対して表示されますか?現時点では、A> Bのみが表示され、> Cは表示されません(Cは3番目(レベル)です
ゾロモン

@Zolomon-あなたの質問を理解したかどうかわかりません。これにより、クラスが「current-menu-item」、「current-menu-parent」、または「current-menu-ancestor」のメニュー項目の下にあるツリー全体が展開されます。テストすると、メニューにサブページのすべてのレベルが表示されます。何をするつもりですか?
goldenapples

テーマが何らかの形でデフォルトの0(すべてのレベルを表示)をオーバーライドしている場合に備えてdepth、の呼び出しにパラメーターを渡すこともできますwp_nav_menuか?
goldenapples

8

更新: これをプラグインにしました。こちらからダウンロードしてください


私はこれを自分で解決する必要があり、最終的にはメニュー検索の結果にフィルターを書くことになりました。wp_nav_menu通常どおり使用できますが、親要素のタイトルに基づいてメニューのサブセクションを選択します。次のsubmenuようにメニューにパラメーターを追加します。

wp_nav_menu(array(
  'menu' => 'header',
  'submenu' => 'About Us',
));

スラッシュを入れることで、いくつかのレベルを深くすることもできます。

wp_nav_menu(array(
  'menu' => 'header',
  'submenu' => 'About Us/Board of Directors'
));

または、配列を使用する場合:

wp_nav_menu(array(
  'menu' => 'header',
  'submenu' => array('About Us', 'Board of Directors')
));

タイトルのスラッグバージョンを使用しているため、大文字や句読点などを容認する必要があります。


idを介してサブメニューに到達することは可能ですか?私はページID、または投稿IDを意味します。
ディガーカム

split()は非推奨です。$loc = split( "/", $loc );プラグインで次のように置き換えてください$loc = preg_split( "~/~", $loc );
Floris

$ submenuをオプションにすることもお勧めします。そのため、必要なときにメニュー全体をフェッチできます。これを最上部のフィルターに追加します。 `if(!isset($ args-> submenu)){return $ items; } `
フロリス

8

私は自分のために次のクラスをまとめました。現在のページの上位nav親を検索します。または、walkerコンストラクタでターゲットの上位nav IDを指定できます。

class Walker_SubNav_Menu extends Walker_Nav_Menu {
    var $target_id = false;

    function __construct($target_id = false) {
        $this->target_id = $target_id;
    }

    function walk($items, $depth) {
        $args = array_slice(func_get_args(), 2);
        $args = $args[0];
        $parent_field = $this->db_fields['parent'];
        $target_id = $this->target_id;
        $filtered_items = array();

        // if the parent is not set, set it based on the post
        if (!$target_id) {
            global $post;
            foreach ($items as $item) {
                if ($item->object_id == $post->ID) {
                    $target_id = $item->ID;
                }
            }
        }

        // if there isn't a parent, do a regular menu
        if (!$target_id) return parent::walk($items, $depth, $args);

        // get the top nav item
        $target_id = $this->top_level_id($items, $target_id);

        // only include items under the parent
        foreach ($items as $item) {
            if (!$item->$parent_field) continue;

            $item_id = $this->top_level_id($items, $item->ID);

            if ($item_id == $target_id) {
                $filtered_items[] = $item;
            }
        }

        return parent::walk($filtered_items, $depth, $args);
    }

    // gets the top level ID for an item ID
    function top_level_id($items, $item_id) {
        $parent_field = $this->db_fields['parent'];

        $parents = array();
        foreach ($items as $item) {
            if ($item->$parent_field) {
                $parents[$item->ID] = $item->$parent_field;
            }
        }

        // find the top level item
        while (array_key_exists($item_id, $parents)) {
            $item_id = $parents[$item_id];
        }

        return $item_id;
    }
}

ナビゲーション呼び出し:

wp_nav_menu(array(
    'theme_location' => 'main_menu',
    'walker' => new Walker_SubNav_Menu(22), // with ID
));

4

@davidn @hakreこんにちは、HTMLパーサーまたはdisplay_elementをオーバーライドしないwithoutい解決策があります。

 class Selective_Walker extends Walker_Nav_Menu
    {
        function walk( $elements, $max_depth) {

            $args = array_slice(func_get_args(), 2);
            $output = '';

            if ($max_depth < -1) //invalid parameter
                return $output;

            if (empty($elements)) //nothing to walk
                return $output;

            $id_field = $this->db_fields['id'];
            $parent_field = $this->db_fields['parent'];

            // flat display
            if ( -1 == $max_depth ) {
                $empty_array = array();
                foreach ( $elements as $e )
                    $this->display_element( $e, $empty_array, 1, 0, $args, $output );
                return $output;
            }

            /*
             * need to display in hierarchical order
             * separate elements into two buckets: top level and children elements
             * children_elements is two dimensional array, eg.
             * children_elements[10][] contains all sub-elements whose parent is 10.
             */
            $top_level_elements = array();
            $children_elements  = array();
            foreach ( $elements as $e) {
                if ( 0 == $e->$parent_field )
                    $top_level_elements[] = $e;
                else
                    $children_elements[ $e->$parent_field ][] = $e;
            }

            /*
             * when none of the elements is top level
             * assume the first one must be root of the sub elements
             */
            if ( empty($top_level_elements) ) {

                $first = array_slice( $elements, 0, 1 );
                $root = $first[0];

                $top_level_elements = array();
                $children_elements  = array();
                foreach ( $elements as $e) {
                    if ( $root->$parent_field == $e->$parent_field )
                        $top_level_elements[] = $e;
                    else
                        $children_elements[ $e->$parent_field ][] = $e;
                }
            }

            $current_element_markers = array( 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor' );  //added by continent7
            foreach ( $top_level_elements as $e ){  //changed by continent7
                // descend only on current tree
                $descend_test = array_intersect( $current_element_markers, $e->classes );
                if ( !empty( $descend_test ) ) 
                    $this->display_element( $e, $children_elements, 2, 0, $args, $output );
            }

            /*
             * if we are displaying all levels, and remaining children_elements is not empty,
             * then we got orphans, which should be displayed regardless
             */
             /* removed by continent7
            if ( ( $max_depth == 0 ) && count( $children_elements ) > 0 ) {
                $empty_array = array();
                foreach ( $children_elements as $orphans )
                    foreach( $orphans as $op )
                        $this->display_element( $op, $empty_array, 1, 0, $args, $output );
             }
            */

/*added by alpguneysel  */
                $pos = strpos($output, '<a');
            $pos2 = strpos($output, 'a>');
            $topper= substr($output, 0, $pos).substr($output, $pos2+2);
            $pos3 = strpos($topper, '>');
            $lasst=substr($topper, $pos3+1);
            $submenu= substr($lasst, 0, -6);

        return $submenu;
        }
    }

それらすべてを試した後、Alpのソリューションが私にとって唯一有効なソリューションでした。しかし、それに関する1つの問題。ショーの最初のレベルの子のみで、3番目または4番目のレベルの子は表示されません。私はそれを実現するために何日も試みてきました。誰も彼のソリューションをそのように修正する方法を知っていますか?PS。コメントを追加できませんので、回答として行う必要があります。
キチェラ

3

ナビゲーションメニューの出力には、現在のアイテム、現在のアイテムの祖先などの多くのクラスが含まれます。状況によっては、ナビゲーションツリー全体を出力し、cssを使用してそれを切り詰めることで、目的の操作を実行できました現在のページの子のみなど


3

役立つはずの修正されたウォーカーを作成しました!完璧ではありません-いくつかの空の要素を残しますが、トリックを行います。変更は基本的にこれらの$ current_branchビットです。それが誰かを助けることを願っています!

class Kanec_Walker_Nav_Menu extends Walker {
/**
 * @see Walker::$tree_type
 * @since 3.0.0
 * @var string
 */
var $tree_type = array( 'post_type', 'taxonomy', 'custom' );

/**
 * @see Walker::$db_fields
 * @since 3.0.0
 * @todo Decouple this.
 * @var array
 */
var $db_fields = array( 'parent' => 'menu_item_parent', 'id' => 'db_id' );

/**
 * @see Walker::start_lvl()
 * @since 3.0.0
 *
 * @param string $output Passed by reference. Used to append additional content.
 * @param int $depth Depth of page. Used for padding.
 */
function start_lvl(&$output, $depth) {
    $indent = str_repeat("\t", $depth);
    $output .= "\n$indent<ul class=\"sub-menu\">\n";
}

/**
 * @see Walker::end_lvl()
 * @since 3.0.0
 *
 * @param string $output Passed by reference. Used to append additional content.
 * @param int $depth Depth of page. Used for padding.
 */
function end_lvl(&$output, $depth) {
    global $current_branch;
    if ($depth == 0) $current_branch = false;
    $indent = str_repeat("\t", $depth);
    $output .= "$indent</ul>\n";
}

/**
 * @see Walker::start_el()
 * @since 3.0.0
 *
 * @param string $output Passed by reference. Used to append additional content.
 * @param object $item Menu item data object.
 * @param int $depth Depth of menu item. Used for padding.
 * @param int $current_page Menu item ID.
 * @param object $args
 */
function start_el(&$output, $item, $depth, $args) {
    global $wp_query;
    global $current_branch;

    // Is this menu item in the current branch?
    if(in_array('current-menu-ancestor',$item->classes) ||
    in_array('current-menu-parent',$item->classes) ||
    in_array('current-menu-item',$item->classes)) {
        $current_branch = true; 
    }

    if($current_branch && $depth > 0) {
        $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

        $class_names = $value = '';

        $classes = empty( $item->classes ) ? array() : (array) $item->classes;
        $classes[] = 'menu-item-' . $item->ID;

        $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
        $class_names = ' class="' . esc_attr( $class_names ) . '"';

        $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
        $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';

        $output .= $indent . '<li' . $id . $value . $class_names .'>';

        $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
        $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
        $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
        $attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';

        $item_output = $args->before;
        $item_output .= '<a'. $attributes .'>';
        $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
        $item_output .= '</a>';
        $item_output .= $args->after;

        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }

}

/**
 * @see Walker::end_el()
 * @since 3.0.0
 *
 * @param string $output Passed by reference. Used to append additional content.
 * @param object $item Page data object. Not used.
 * @param int $depth Depth of page. Not Used.
 */
function end_el(&$output, $item, $depth) {
    global $current_branch;
    if($current_branch && $depth > 0) $output .= "</li>\n";
    if($depth == 0) $current_branch = 0;
}

}


3

プラグインのコードを確認するか、目的に合わせて使用​​してください;)

このプラグインは、強化された「ナビゲーションメニュー」ウィジェットを追加します。ウィジェットを介してカスタムメニューの出力をカスタマイズするために設定できる多くのオプションを提供します。

機能が含まれます:

  • カスタム階層-「関連するサブアイテムのみ」または「厳密に関連するサブアイテムのみ」。
  • 表示する深さと最大レベル+フラットディスプレイ。
  • 選択したものから始まるすべてのメニュー項目を表示します。
  • 現在の要素への直接パスのみ、または
    選択したアイテムの子のみを表示します(親アイテムを含めるオプション)。
  • ウィジェットブロックのカスタムクラス。
  • そして、wp_nav_menu関数のほとんどすべてのパラメーター。

http://wordpress.org/extend/plugins/advanced-menu-widget/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.