![](/img/trans.png)
[英]When Logged Out how to change the link of my account menu Woocommerce
[英]Change account menu wording if user is “logged in” in WooCommerce
我正在使用带有 Storefront 子主题的 WooCommerce。
我有一个名为“桌面二级右上角 EN”的二级菜单,其中有一个指向“我的帐户”的链接。
我的问题是:如果客户已登录,如何更改“我的帐户”项目的措辞?
我想这样做,而不必在后台创建另一个菜单,当然也不需要安装插件。
我应该能够使用类似的东西:
function menu_add_admin_buttons( $items, $args ) {
if( 'secondary' == $args['theme_location'] ) {
$btn_format = '<li><a href="%s">%s</a></li>';
if ( is_user_logged_in() ) {
$btn = sprintf($btn_format, admin_url('profile.php'), __('Your Profile') );
} else {
$btn = sprintf($btn_format, wp_login_url(), __('Log In') );
}
return $items . $btn;
}
}
$menu_filter = 'wp_nav_menu_' . sanitize_title("Desktop secondary top right EN") . '_items';
add_filter($menu_filter, 'menu_add_admin_buttons', 20, 2);
但它必须根据我的需要进行定制。 我怎样才能做到这一点?
我这样做了,它似乎工作正常。 我使用标准钩子: wp_setup_nav_menu_item
来过滤菜单项。 我检查它是否不是后台(管理模式)以及 woocommerce 是否处于活动状态。 那么,如果url是“我的账户”菜单的url,我根据当前语言进行更改。
add_filter( 'wp_setup_nav_menu_item','my_account_setup' );
function my_account_setup( $item ) {
if ( ! is_admin() && class_exists( 'woocommerce' ) ) {
if ( $item->url == esc_url( wp_login_url() ) || strpos($item->url, '/my-account-2-2/') !== false ){
if ( is_user_logged_in() ) {
if(get_locale() == 'fr_FR') {
$item->title = 'MON COMPTE';
} else {
$item->title = 'MY ACCOUNT';
}
} else {
if(get_locale() == 'fr_FR') {
$item->title = 'LOGIN';
} else {
$item->title = 'LOGIN';
}
}
}
}
return $item;
}
您可以尝试另一个 wordpress 挂钩wp_nav_menu_items
:
function menu_add_admin_buttons( $items, $args ) {
$btn = '';
if ( $args->theme_location === 'secondary' ) {
$btn_format = '<li><a href="%s">%s</a></li>';
if ( is_user_logged_in() ) {
$btn = sprintf($btn_format, admin_url( 'profile.php' ), __( 'Your Profile' ) );
} else {
$btn = sprintf($btn_format, wp_login_url(), __('Log In') );
}
}
return sprintf( '%s%s', $items, $btn );
}
add_filter( 'wp_nav_menu_items','menu_add_admin_buttons', 10, 2 );
请您检查一下文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.