如何在WooCommerce中修改“我的帐户”页面的导航菜单

时间:2017-07-26 作者:Dhruvang Gajjar

我想修改WooCommerce“我的帐户”左侧导航菜单。

为此,我在woocommerce/templates/myaccount/navigation.php.这种方法的问题是:

我可以添加新项目only 位于菜单中的第一个或最后一个位置。我需要他们在第二和第三位置在我方便的时候定制WooCommerce“我的帐户”导航菜单的最佳方式是什么?

enter image description here

2 个回复
最合适的回答,由SO网友:ClemC 整理而成

为此,你需要not 需要修改woocommerce/templates/myaccount/navigation.php.

自定义“我的帐户”导航菜单项的最佳方法是使用:

通过使用woocommerce_account_menu_items 过滤器挂钩,集成perfectly 您自己的物品到WC,事实上:

可以通过WC“帐户”设置页面重新定义您自己的项目端点代码示例:

// 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;
}
Note 1: WC自动定义项目的链接urlhere. 为此,WC只需将上面过滤器中定义的项目端点附加到“我的帐户”页面URL。因此,相应地定义项目端点。

Note 2: 在您的问题中,您似乎直接在core中修改了WooCommerce模板
woocommerce/templates/myaccount/navigation.php
当您have to 修改WC模板,正确的方法是复制模板的路径relativewoocommerce/templates 将文件夹放入主题/插件中woocommerce 文件夹例如,在我们的示例中,您必须将模板粘贴到:
child-theme/woocommerce/myaccount/navigation.php.

SO网友:Amin

定制Woocommerce帐户和添加新项目只需几个步骤,

First Step: Create Links:

您应该使用woocommerce_account_menu_items filter可修改现有菜单项或添加新菜单项,例如,我添加了一个名为Wishlist

add_filter( \'woocommerce_account_menu_items\', function($items) {
    $items[\'wishlist\'] = __(\'Wishlist\', \'textdomain\');

    return $items;
}, 99, 1 );
Note: 我用了最简单的方法array_slice 如果你想把菜单项放在你想要的位置。

P.s: 如果要删除或修改现有项目,可以这样做:

add_filter( \'woocommerce_account_menu_items\', function($items) {
    unset($items[\'downloads\']); // Remove downloads item
    $items[\'orders\'] = __(\'My Orders\', \'textdomain\'); // Changing label for orders

    return $items;
}, 99, 1 );

Step 2: Add rewrite end points:

对于您添加的每个项目,您需要添加一个端点:

add_action( \'init\', function() {
    add_rewrite_endpoint( \'wishlist\', EP_ROOT | EP_PAGES );
    // Repeat above line for more items ...
} );
请注意,添加新端点后,需要通过转到wp-admin/settings/permalinks并单击update 按钮或带flush_rewrite_rules() 作用

Step 3: Display new item content

要显示新添加项目的内容,应使用woocommerce_account_{myEndPoint}_endpoint 操作,对于我们的示例,我创建了一个名为wishlist.php 在我的主题目录下woocommerce/myaccount/ 并按如下方式显示其内容:

add_action( \'woocommerce_account_wishlist_endpoint\', function() {
    wc_get_template_part(\'myaccount/wishlist\');
});

结束

相关推荐

Odd spacing in Navigation Bar

我正在重新设计my website, 我很难找到是什么导致导航项目之间的间距(我假设是边距)。我一直在钻研chrome开发工具,但我在任何地方都找不到导致它的原因。请注意,当您在项目之间悬停时,项目之间会有一个明显的白色条带。