繁体   English   中英

如果用户在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM