web-dev-qa-db-ja.com

WooCommerceの「マイアカウント」ページのナビゲーションメニューを変更する方法

WooCommerceの「マイアカウント」左側のナビゲーションメニューを変更したいです。

そのために、woocommerce/templates/myaccount/navigation.phpに変更を加えました。この方法の問題点は次のとおりです。

  • メニューの最初または最後の位置に新しい項目 only を追加できます。私は代わりに2番目と3番目のポジションでそれらを必要とするでしょう……。
  • トイレが更新された場合、それは変更される可能性があります...

私の都合の良いときにWooCommerceの「マイアカウント」ナビゲーションメニューをカスタマイズするための最良の方法は何ですか?

enter image description here 

2
Dhruvang Gajjar

そのためには、notwoocommerce/templates/myaccount/navigation.php を変更する必要があります。

「マイアカウント」ナビゲーションメニュー項目をカスタマイズする最良の方法は、次を使用することです。

このように、woocommerce_account_menu_itemsフィルターフックを使用することで、独自のアイテムをWCにperfectly統合します。

  • WC「アカウント」設定ページを介して独自のアイテムのエンドポイントを再定義する可能性。
  • たとえば、パーマリンクの設定/構造に変更が加えられると、WCはアイテムリンクのURLを自動的に更新します。

コード例:

// Note the low hook priority, this should give to your other plugins the time to add their own items...
add_filter( 'woocommerce_account_menu_items', 'add_my_menu_items', 99, 1 );

function add_my_menu_items( $items ) {
    $my_items = array(
    //  endpoint   => label
        '2nd-item' => __( '2nd Item', 'my_plugin' ),
        '3rd-item' => __( '3rd Item', 'my_plugin' ),
    );

    $my_items = array_slice( $items, 0, 1, true ) +
        $my_items +
        array_slice( $items, 1, count( $items ), true );

    return $my_items;
}

注1:アイテムのリンクのURLは、WC here によって自動的に定義されます。これを行うには、WCは上記のフィルターで定義されたアイテムエンドポイントを[マイアカウント]ページのURLに追加するだけです。したがって、それに応じてアイテムのエンドポイントを定義します。

注2:あなたの質問では、WooCommerceテンプレートをコアで直接変更したようです...
woocommerce/templates/myaccount/navigation.php
WCテンプレートを変更する必要がある場合、正しい方法はテンプレートのパスを複製することですrelativewoocommerce/templatesフォルダーからテーマ/プラグインのwoocommerceフォルダーに追加します。たとえば、この場合、テンプレートを次の場所に貼り付ける必要があります。
child-theme/woocommerce/myaccount/navigation.php

16
ClemC