web-dev-qa-db-ja.com

ナビゲーションメニュー全体を複製する最も簡単な方法は何ですか?

ナビゲーションメニュー全体を複製する最も簡単な方法は何ですか? SQLコマンドが関係しているかどうかは関係ありません。私はちょうど私が複製したいいくつかの本当に大きいメニューを持っています。私はこれを行うためのプラグインを見ませんでした。

わかりやすくするために、メニューを複製して、それを編集して他の場所で二次メニューとして使用できるようにします。メニューを2回表示しようとはしていません。

2
cwd

更新: "最も簡単な"方法は私の新しいプラグインを使うことです: http://wordpress.org/extend/plugins/enhanced-menu-editor/

まだ承認されていませんが、承認されたらウィジェットを公開します。メニューをコピーできるだけでなく、メニューエディタで設定したメニュー構造をページ自体のページ階層に同期させることもできます。そのため、潜在的に何百ものページを手動で編集する代わりに、ドラッグ&ドロップでAjaxを使用することができます。

古い答え:

最も簡単な方法はコードを使うことです。 2つの機能があります。

メニュー自体を作成し、menu_idを返すwp_create_nav_menu()wp_update_nav_menu_item()これは、メニュー項目ID paramに0を渡すと、新しいメニュー項目を作成します。

それから、wp_nav_menuウォーカークラスを使用して、メニュー内の既存の各項目を繰り返すことができます。このウェブサイトはそれから始めるためにあなたに良い基準点を与えるでしょう。

http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output

そのため、まずナビゲーションメニュー作成機能を呼び出します。

次に、与えられたページにナビゲーションウォーカーを実装します。 walkerクラスのstart_el関数の中で、既存のメニューと同じプロパティでwp_update_nav_menu_item()を呼び出すことを許可する$ itemパラメータにアクセスできますが、アイテムの実際のIDの代わりに0を渡すだけで新しい項目が作成されます。メニュー項目。

考慮する必要がある他の唯一のプロパティはmenu-item-parent-idです。これは、新しく作成されたメニュー項目を参照し、他のメニューの古い項目を参照したくないためです。そのためには、古いIDから新しいIDまでを追跡する配列を作成する必要があります。

あなたがこの解決策の具体的な例が欲しいならば、ちょうどmarcuspope.comで私に電子メールを送ってください、そして、私が何ができるか見るでしょう。

それが役立つことを願っています! - マルクス

2
Marcus Pope

だから私は同様の問題に苦しんでいた

  1. 私は許可に基づいて表示するためにたくさんのメニューを作成したいと思いました。

  2. それから私はそれらのすべてのメニューを同じ権限を共有する複数のブログに移行する必要がありました。

しかし、私は中途半端なプログラマーです。

だからこれはKludgeソリューションですが、それは動作するようだ、プログラミングは必要ありません

WPはエクスポート機能を持っています - あなたがきれいなブログを持っているなら(そしてあなたが持っていなくても)それはすべてのメニュー項目がエクスポートファイルの同じ部分にリストされているようです。

1つのブログを扱う場合、変更が必要なものは2つしかありません(スラッグが重複しているため投稿とページはスキップされるため)。

これはメニューのカスタムカテゴリの定義です。スラッグとCDATAを変更する必要があります(この例では「FA」と表示されています)。

<wp:term><wp:term_id>3</wp:term_id><wp:term_taxonomy>nav_menu</wp:term_taxonomy><wp:term_slug>FA</wp:term_slug><wp:term_name><![CDATA[FA]]></wp:term_name></wp:term>

次に、検索を行い、そのスラッグ/カテゴリに関連するすべてのメニュー項目を置き換える必要があります。

<category domain="nav_menu" nicename="FA"><![CDATA[FA]]></category>

再び "FA"を探す

きれいなファイル名を付けてXMLを保存します。

それからWPインポータープラグインを使ってXMLをインポートします

YMMVとWFMを併用することで時間を節約できました

2
AndyBeard