我正在将WooCommerce用于非营利性网站,并希望更改"下订单"按钮文字说"放置捐款"。该按钮在WooCommerce的payment.php文件中定义:
<?php echo apply_filters( 'woocommerce_order_button_html',
'<input 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 ) . '" />' ); ?>
我将以下内容添加到子主题中的functions.php文件中:
function custom_order_button_text($order_button_text){
$order_button_text = 'Place Donation';
return $order_button_text;
}
add_filter('woocommerce_order_button_text', 'custom_order_button_text');
它似乎暂时有效,但更改为“下订单”。在页面完成加载之前。输出HTML最终为:
<input type="submit" class="button alt" name="woocommerce_checkout_place_order"
id="place_order" value="Place order" data-value="Place Donation">
*更新:我关闭了javascript,发现该按钮随后说了#34;放置捐款。&#34;然后我在woocommerce / assets / js / frontend / checkout.js中找到了一个脚本,作为payment_method_selected的一部分
if ( $( this ).data( 'order_button_text' ) ) {
$( '#place_order' ).val( $( this ).data( 'order_button_text' ) );
} else {
$( '#place_order' ).val( $( '#place_order' ).data( 'value' ) );
}
不确定覆盖此方法的最佳方法。有什么想法吗?
答案 0 :(得分:2)
我自己也遇到过同样的问题。我所做的就是解决它的问题。
不是将它完全出列而是将其出列并将精确相同的脚本上传到我的孩子主题+注释掉
`/* if ( $( this ).data( 'order_button_text' ) ) {
$( '#place_order' ).val( $( this ).data( 'order_button_text' ) );
} else {
$( '#place_order' ).val( $( '#place_order' ).data( 'value' ) );
}*/ `
PHP:
`add_action('wp_enqueue_scripts', 'override_woo_frontend_scripts');
function override_woo_frontend_scripts() {
wp_deregister_script('wc-checkout');
wp_enqueue_script('wc-checkout', get_template_directory_uri() . '/../storefront-child-theme-master/woocommerce/checkout.js', array('jquery', 'woocommerce', 'wc-country-select', 'wc-address-i18n'), null, true);
} `
答案 1 :(得分:1)
您可以使用以下简单的woocommerce钩子将“下订单”按钮的文本更改为“下放捐赠”。
/* Add to the functions.php file of your theme/plugin */
add_filter( 'woocommerce_order_button_text', 'wc_custom_order_button_text' );
function wc_custom_order_button_text() {
return __( 'Place Donation', 'woocommerce' );
}
希望这对其他人有帮助。谢谢
答案 2 :(得分:0)
您尝试更改按钮文本是有效的,但正如您所发现的,WooCommerce具有讨厌的JavaScript来取代所有这些内容。
为了避免这种情况,我是使用functions.php文件中的过滤器更改了订单按钮的ID,所以有问题的WooCommerce JavaScript不会对其造成影响。
function so37729878_update_order_button_id( $button_html ) {
$button_html = str_replace( 'id="place_order"', 'id="place_order_updated_to_fix_translation"', $button_html );
return $button_html;
}
add_filter( 'woocommerce_order_button_html', 'so37729878_update_order_button_id' );
这样,您不必交换任何WooCommerce脚本。订单仍然可以正确提交,尽管我不确定这种方法是否会破坏其他行为。
答案 3 :(得分:0)
您可以使用此方法替换文本。
add_filter( 'woocommerce_order_button_html', 'custom_button_html' );
function custom_button_html( $button_html ) {
$button_html = str_replace( 'Place order', 'Submit', $button_html );
return $button_html;
}