使用您的代码的问题是没有定义$order_button_text
变量...
下面,我用订单支付页面(for checkout page see the addition below)的正确按钮代码创建了一个短码函数:
add_shortcode( 'pay_order_button', 'pay_order_button_shortcode' );
function pay_order_button_shortcode() {
$order_button_text = apply_filters( 'woocommerce_pay_order_button_text', __( 'Pay for order', 'woocommerce' ) );
return apply_filters( 'woocommerce_pay_order_button_html',
'<button type="submit" class="button alt' .
esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' .
wc_wp_theme_get_element_class_name( 'button' ) : '' ) .
'" id="place_order" value="' . esc_attr( $order_button_text ) .
'" data-value="' . esc_attr( $order_button_text ) . '">' .
esc_html( $order_button_text ) . '</button>' );
}
代码放在活动子主题(或活动主题)的函数.php文件中.经过测试,效果良好.
注意:这应该在Main <form>
内部使用
Usage:个个个
你可以把它当做普通的短码[pay_order_button]
来使用.
您可以在任何PHP代码中使用它:
echo do_shortcode("[pay_order_button]");
附加1:对于checkout page个按钮:
如果您想在 checkout 页面上添加第二个"下单"按钮,您可以使用以下快捷码函数:
add_shortcode( 'place_order_button', 'checkout_place_order_button_shortcode' );
function checkout_place_order_button_shortcode() {
$order_button_text = apply_filters( 'woocommerce_order_button_text', __( 'Place order', 'woocommerce' ) );
return apply_filters( 'woocommerce_order_button_html',
'<button type="submit" class="button alt' .
esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' .
wc_wp_theme_get_element_class_name( 'button' ) : '' ) .
'" 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>' ); // @codingStandardsIgnoreLine
}
Usage:个个个
你可以把它当做普通的短码[place_order_button]
来使用.
您可以在任何PHP代码中使用它:
echo do_shortcode("[place_order_button]");
您可以在类似(displayed here before order review section)的挂钩函数中使用它:
add_action( 'woocommerce_checkout_before_order_review', 'additional_checkout_order_button' );
function additional_checkout_order_button() {
echo do_shortcode("[place_order_button]");
}
代码放在活动子主题(或活动主题)的函数.php文件中.经过测试,效果良好.
注意:这应该在Main <form>
内部使用
附加2:在 checkout 页面或订单支付页面的主<form>
内部或outside中使用一个额外的提交按钮,使用一点jQuery排队代码:
add_shortcode( 'submit_button', 'additional_submit_button_shortcode' );
function additional_submit_button_shortcode() {
if( ! is_checkout() ) return;
if ( is_wc_endpoint_url('order-pay') ) {
$order_button_text = esc_html( apply_filters( 'woocommerce_pay_order_button_text', __( 'Pay for order', 'woocommerce' ) ) );
$form_selector = 'form#order_review';
} else {
$order_button_text = esc_html( apply_filters( 'woocommerce_order_button_text', __( 'Place order', 'woocommerce' ) ) );
$form_selector = 'form.form.checkout';
}
// Enqueuing some Javascript
wc_enqueue_js( "$('body').on( 'click', 'button#submit_order', function(){
$('$form_selector').submit();
});");
return sprintf('<button type="button" class="button alt" id="submit_order">%s</button>', $order_button_text );
}
代码放在活动子主题(或活动主题)的函数.php文件中.经过测试,效果良好.
Usage:个个个
你可以把它当做普通的短码[submit_button]
来使用.
您可以在任何PHP代码中使用它:
echo do_shortcode("[submit_button]");