web-dev-qa-db-ja.com

Nav Walkerを使用する利点

Wp_get_nav_menu_items()を繰り返し処理するよりもナビゲーションウォーカークラスを使用することに何か利点はありますか?

Nav walkerは私にとって非常に扱いにくいように見え、配列を繰り返すことはより簡単でより再利用可能に感じますが、それから私はあまり知らないwordpressの内部メニューフィルタをバイパスします。これは私のテーマをいくつかのプラグインと互換性がないようにするでしょうか?

ここでのベストプラクティスのアドバイスは大歓迎です。

2
Guerrilla

wp_nav_menu() の使い方がよくわかります。 usewp_get_nav_menu_items()wp_nav_menu()は、デフォルトのウォーカーまたはカスタムウォーカーと一緒に使用できます。

正直に言うと、手動でwp_get_nav_menu_items()などを使ってメニューを作成した時間を思い出すことはできません。そして、私は怠惰になる傾向があるので、これは間違いなくもっと作業です。

利用可能なより多くの情報があるので、 Walker Class はあなたに多くの可能性を与えます、それは間違いなく大きいプラスです。ですから、あなたがウォーカーを利用すべきかどうか - そうでなければ(私が言うと思いますが)wp_nav_menu()を使用するかどうか - あなたが達成する必要があるもののほとんど問題です。大事なことを言い忘れましたが、ウォーカーはうまく再利用可能です。

1
Nicolai

デフォルトのwalkerを使うと、99.999999999999 ....そのフィルタを介して999999999999%のインスタンスがカバーされ、私たちの両方よりも賢い人によって維持され、多くの人々によって使用されます。

ウォーカーを修正する必要がある何かをする必要がある場合は、サブクラスを使用してください。

それ以外の場合は、walkerフィルタを使用するものとの互換性がなくなるため、ナビゲーションメニューインターフェイスの機能の半分を最初から実装し直す必要があります。

0
Tom J Nowell

柔軟性と清潔さ。

Walkerベースのクラスは、分岐したデータオブジェクトに基づいてカスタム出力を生成するための優れた方法です。それらはあなたのコードを無駄のない、平均的な、そして簡単に読めるように保ちます。各「枝」(サブメニュー項目を含む任意のメニュー項目)の開始および終了の出力、および開始および/または各ノード/メニュー項目の末尾。 WordPressのメニューオブジェクトを使って複雑なカスタムメニューマークアップを生成するのは私の目的です。

  1. まず、カスタムのウォーカークラスを作成します。
  2. それからwp_nav_menu()をあなたのテーマの中で使い、引数の一つとして'walker' => new YourWalkerを定義してください。
  3. それでおしまい。

Walkerクラスの使い方の詳細については、こちらを参照してください。

0
Matt van Andel