【问题标题】:Avoid proceed-to-checkout-button text refreshing to default text in WooCommerce cart page避免将继续结帐按钮文本刷新为 WooCommerce 购物车页面中的默认文本
【发布时间】:2020-10-15 01:51:54
【问题描述】:

在 WooCommerce 中,在我的 Storefront 子主题中,我编辑了 proceed-to-checkout-button.php 中的代码以将措辞从“继续结帐”更改为“结帐”:

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}
?>

<a href="<?php echo esc_url( wc_get_checkout_url() ); ?>" class="checkout-button button wc-forward">
    <?php esc_html_e( 'Checkout', 'woocommerce' ); ?>
</a> 

但当用户在购物车页面更改产品数量时,按钮文本会恢复为默认的“继续结帐”。

是否有过滤器或在哪里编辑此更新后的文本?


编辑 - 问题已解决

问题与 WooCommerce Better Usability pro 插件中的特定购物车选项有关,其中需要禁用选项“自动更新购物车时显示文本”(未选中)。

【问题讨论】:

    标签: php wordpress woocommerce cart hook-woocommerce


    【解决方案1】:

    不应覆盖proceed-to-checkout-button.php 文件,而应使用以下内容:

    remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );
    add_action( 'woocommerce_proceed_to_checkout', 'custom_button_proceed_to_checkout', 20 );
    function custom_button_proceed_to_checkout() {
        echo '<a href="'.esc_url(wc_get_checkout_url()).'" class="checkout-button button alt wc-forward">' .
        __("Checkout", "woocommerce") . '</a>';
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。已在 Storefront 主题下的最后一个 WooCommerce 版本上测试并运行。

    现在,由于您在模板中进行了很多自定义,或者您可能正在使用购物车页面中的某些插件进行自定义,因此由于这些自定义,问题可能仍然存在。

    【讨论】:

    • 嗨@LoicTheAztec,谢谢,但使用您的代码,更新产品编号后我仍然有“继续结帐”。 staging.hemen-biarritz.com/cart
    • @Louis 这是由于您的大量自定义,因为我在 Storefront 主题(带有子主题)下测试了最后一个 WooCommerce 版本的所有内容,即使我更改购物车中的数量,它也能完美运行。所以你的问题似乎与购物车片段(Ajax)有关。您在 SackOverFlow 上的大部分问题都是由于您从一段时间以来所做的自定义。
    • 可以私信聊天吗?
    • 我刚刚在您的“联系我”链接上向您发送了一条消息。用我的电话号码。谢谢;)
    【解决方案2】:

    这个文件proceed-to-checkout-button.php 是从函数woocommerce_button_proceed_to_checkout() 调用的,该函数与动作“woocommerce_proceed_to_checkout”挂钩 - 您可以在 woocommerce/includes/wc-template-hooks.php 中找到它

    因此,您可以覆盖函数 woocommerce_button_proceed_to_checkout() - 只需将其添加到您的 functions.php 中

    /**
    *   Change Proceed To Checkout Text in WooCommerce
    *   Add this code in your active theme functions.php file
    **/
    function woocommerce_button_proceed_to_checkout() {
        
           $new_checkout_url = WC()->cart->get_checkout_url();
           ?>
           <a href="<?php echo $new_checkout_url; ?>" class="checkout-button button alt wc-forward">
           
           <?php _e( 'Go to Secure Checkout', 'woocommerce' ); ?></a>
           
    <?php
    }
    

    我猜可能ajax按钮的更新来自父主题。

    【讨论】:

    • 感谢您的回答,但结果完全相同:第一个显示是正确的(它显示您的代码修改了什么)但是在更新产品数量时,按钮刷新并且文本恢复为默认值“继续结帐”
    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多