有时您可能想更改标准的结账按钮文本,例如“下订单”,“继续进行PayPal”等。在本教程中,我将向您展示几种方法。
请注意,此文字会根据所选的付款方式动态更改:
从理论上讲,如果您了解WooCommerce模板结构,则可以替换此文件中的按钮文本:
但请不要这样做,因为通过钩子可以实现的。我会展示给您看。
方法1:使用woocommerce_order_button_text钩子更改文本
最简单的方法是,将这段代码复制到当前主题的functions.php
文件中(最好是添加到子主题或自定义插件,否则,每次主题更新后,您所做的更改都会丢失)。
/**
* @snippet 更改“下订单”按钮文本 @ WooCommerce Checkout
* @sourcecode https://rudrastyh.com/?p=8327#woocommerce_order_button_text
* @author Misha Rudrastyh
*/
add_filter( 'woocommerce_order_button_text', 'misha_custom_button_text' );
function misha_custom_button_text( $button_text ) {
return 'Submit'; // 修改这里的文字即可
}
如果购物车中有特定产品,或者购物车中有特定类别的产品,您还可以更改按钮文本。
add_filter( 'woocommerce_order_button_text', 'misha_custom_button_text_for_product' );
function misha_custom_button_text_for_product( $button_text ) {
$product_id = 18; // 可以修改这里的产品ID
if( WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( $product_id ) ) ) {
$button_text = 'Submit';
}
return $button_text;
}
方法2:使用woocommerce_order_button_html钩子更改文本
使用此函数,我们主要是在woocommerce_order_button_html
过滤器挂钩中使用PHP函数 str_replace()
进行文本替换。这是实现方法:
add_filter( 'woocommerce_order_button_html', 'misha_custom_button_html' );
function misha_custom_button_html( $button_html ) {
$button_html = str_replace( 'Place order', 'Submit', $button_html );
return $button_html;
}
该挂钩woocommerce_order_button_html
仅接受一个参数,即按钮HTML。该挂钩还允许您从头开始创建按钮的HTML。
add_filter( 'woocommerce_order_button_html', 'misha_custom_button_html' );
function misha_custom_button_html( $button_html ) {
$order_button_text = 'Submit';
$button_html = '<button type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '">' . esc_html( $order_button_text ) . '</button>';
}
为支付网关更改按钮文本
首先,您的自定义支付网关可能没有这方面的钩子,其次,当然,您不能直接在支付网关插件文件中进行更改。
那么该怎么办?JavaScript?当然不!
即使支付网关没有这个钩子,它也必须支持本地化。因此,在这种情况下, gettext
钩子将为我们提供帮助。
/**
* @snippet Change "Proceed to PayPal" Button text @ WooCommerce Checkout
* @sourcecode https://rudrastyh.com/?p=8327#payment_gateways_text
* @author Misha Rudrastyh
*/
add_filter( 'gettext', 'misha_custom_paypal_button_text', 20, 3 );
function misha_custom_paypal_button_text( $translated_text, $text, $domain ) {
if( $translated_text == 'Proceed to PayPal' ) { // 检测旧文本
$translated_text = 'Pay with PayPal'; // 在这里设置新的按钮文本
}
return $translated_text;
}
您可以将此代码应用于任何支付网关,只需检测旧的按钮文本,然后在第10行代码中替换为新的文本即可。
请小心,因为您要覆盖的字符串(例如“ Proceed to PayPal”)可能会在您网站的其他地方使用。如果是这样,只需添加一个条件判断。
声明:原文出自 https://rudrastyh.com/woocommerce/place-order-button-text.html ,由 WordPress大学 翻译整理,转载请保留本声明!