当你添加一个自定义的 “我的账户” 标签时,或者当你对默认的 “我的账户” 标签顺序不满意时(仪表板-订单-下载-地址-付款方式-账户详情-退出),你可能需要改变一下。
这里有两个超级简单的代码来实现这一点:重新排列 “我的账户” 标签,这样你的客户就不会错过超级重要的 “我的账户” 菜单。

PHP片段1:移动单个标签
是简单、干净的WooCommerce定制。一旦你看了一下片段2,你就会明白为什么。
在这种情况下,我们想把 “订单” 放在 “下载 ” 和 “地址” 之间:使用array_slice() 把现有的标签阵列分成两部分,在一个特定的位置插入我们的标签,然后合并起来。
add_filter( 'woocommerce_account_menu_items', 'bbloomer_add_link_my_account' );
function bbloomer_add_link_my_account( $items ) {
$save_for_later = array( 'orders' => __( 'Orders', 'woocommerce' ) ); // 保存标签
unset( $items['orders'] ); // 移除标签
$items = array_merge( array_slice( $items, 0, 2 ), $save_for_later, array_slice( $items, 2 ) ); // 在位置2后放置标签
return $items;
}
PHP片段2:为多个标签重新排序
当你需要重新排列整个 “我的账户” 标签菜单时,切开数组将一个标签放在中间已经不够了。你必须用一个自定义的顺序重新定义整个数组,并将其返回。
默认的数组是这样的。
$items = array(
'dashboard' => __( 'Dashboard', 'woocommerce' ),
'orders' => __( 'Orders', 'woocommerce' ),
'downloads' => __( 'Downloads', 'woocommerce' ),
'edit-address' => _n( 'Addresses', 'Address', (int) wc_shipping_enabled(), 'woocommerce' ),
'payment-methods' => __( 'Payment methods', 'woocommerce' ),
'edit-account' => __( 'Account details', 'woocommerce' ),
'customer-logout' => __( 'Logout', 'woocommerce' ),
);
因此,在这个片段中,我们只是简单地使用了一个类似的数组,只是进行了自定义排序。
add_filter( 'woocommerce_account_menu_items', 'bbloomer_add_link_my_account' );
function bbloomer_add_link_my_account( $items ) {
$newitems = array(
'dashboard' => __( 'Dashboard', 'woocommerce' ),
'customer-logout' => __( 'Logout', 'woocommerce' ),
'edit-address' => _n( 'Addresses', 'Address', (int) wc_shipping_enabled(), 'woocommerce' ),
'edit-account' => __( 'Account details', 'woocommerce' ),
'orders' => __( 'Orders', 'woocommerce' ),
'downloads' => __( 'Downloads', 'woocommerce' ),
'payment-methods' => __( 'Payment methods', 'woocommerce' ),
);
return $newitems;
}
你可以把PHP片段放在你的子主题 functions.php 文件的底部。
