php WooCommerce订单支付页面上的附加支付订单按钮

yqlxgs2m  于 2023-06-28  发布在  PHP
关注(0)|答案(1)|浏览(107)

WooCommerce支付页面,订单注册按钮位于页面底部,点击它,您将连接到支付门户。
现在我想在页面中间再放一个这样的按钮,这样客户就不必去页面底部去支付门户了。
WooCommerce支付页面的订单按钮的*form-pay.php*文件中有这样一段代码:

<?php echo 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>' ); // @codingStandardsIgnoreLine ?>

但是通过在页面中间复制和粘贴这段代码,我得到了一个错误。

总结:

在**form-checkout.php**文件中重复订单注册按钮。

hfyxw5xn

hfyxw5xn1#

使用您的代码的问题是$order_button_text变量未定义...
下面我做了一个简短的功能与正确的按钮代码订单支付页面 (结帐页面见下面的添加)

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>' );
}

代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。
注意:这应该在主<form>内部使用

用法:

您可以使用它作为一个正常的短码[pay_order_button]
您可以在任何PHP代码中使用它:

echo do_shortcode("[pay_order_button]");

添加1:对于结账页面按钮:
如果您想在结帐页面添加一个辅助的“下订单”按钮,您将使用以下简码函数:

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
}

用法:

您可以使用它作为一个正常的短码[place_order_button]
您可以在任何PHP代码中使用它:

echo do_shortcode("[place_order_button]");

您可以在类似 * 的挂钩函数中使用它(在订单查看部分之前显示)*:

add_action( 'woocommerce_checkout_before_order_review', 'additional_checkout_order_button' );
function additional_checkout_order_button() {
    echo do_shortcode("[place_order_button]");
}

代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。
注意:这应该在主<form>内部使用
添加2:在主<form>内部或外部**使用额外的Submit按钮,在Checkout页面或Order Pay页面中,使用一些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 );
}

代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。

用法:

您可以使用它作为一个正常的短码[submit_button]
您可以在任何PHP代码中使用它:

echo do_shortcode("[submit_button]");

相关问题