在 WooCommerce 中添加 link 到 "You must be logged in to checkout" 消息

Add link to "You must be logged in to checkout" message in WooCommerce

在 WooCommerce 设置页面中,我将客户设置为 不允许 允许在没有帐户的情况下下订单。然后必须登录客户才能结帐。我对这个设置没有问题。它工作正常。

现在,如果客户未登录,则会显示此消息“您必须登录才能结帐。”我只需要在这条消息的末尾添加一个link。

我使用此代码可以更改文本并添加link

function filter_woocommerce_checkout_must_be_logged_in_message( $message ) {
    $message = 'You must be logged in to checkout. <a href="#" id="login-register">login / Register</a>';
    return $message; 
}
add_filter( 'woocommerce_checkout_must_be_logged_in_message', 'filter_woocommerce_checkout_must_be_logged_in_message', 10, 1 );

但问题是 html(link)按原样打印(未呈现为 link)。

看看我的截图,看看我的意思。

那是因为过滤器传递给 esc_html()

这一行是从/templates/checkout/form-checkout.php line 26 @version 3.5.0

复制过来的
echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );

所以如果你真的想添加 HTML 你将不得不覆盖模板文件。这 可以通过将模板文件复制到 yourtheme/woocommerce/checkout/form-checkout.php.

来覆盖模板文件

替换

echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );

echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) ) . '&nbsp;<a href="#" id="login-register">login / Register</a>';