在我的插件中,我试图更改订单数据($ total particullary),具体取决于单击带有结帐页面form>元素中具有自定义值和名称属性的重复按钮“下订单”。它具有checkout页面的url作为form-checkout.php文件中的action属性的值。所以我不知道在哪里处理。在哪里可以获得这些$ _POST变量?通过插件实现它是真的吗?怎么样?我会为每条建议疯狂地高兴。WordPress版本-5.3.2。 Woocommerce版本-3.5
<?php
/**
* Plugin Name: 2buttonsplug
* Description: Description
* Plugin URI: http://#
* Author: Author
* Author URI: http://#
*/
/*
add_action('admin_post_get_for_price_2','mega_function');
add_action('admin_post_get_for_price_3','mega_function');
function mega_function() {
global $gj;
$gj=$_POST['get_for_price_2'];
}
*/
add_action( 'woocommerce_checkout_after_order_review', 'second_place_order_button', 5 );
function second_place_order_button() {
$order_button_text = 'get_for_price_2';
echo '<button type="submit" class="button alt" name="get_lucky_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '">' . esc_html( $order_button_text ) . '</button>';
$order_button_text = 'get_for_price_3';
echo '<button type="submit" class="button alt" name="get_extra_lucky_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '">' . esc_html( $order_button_text ) . '</button>';
}
//woocommerce_checkout_create_order
add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
function change_total_on_checking( $order ) {
$total = $order->get_total();
$new_total = $total * 1.12;
$order->set_total( $new_total );
}
?>
和form-checkout.php第32行:
<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( wc_get_checkout_url() ); ?>" enctype="multipart/form-data">
根据我的经验,结帐是通过对服务器的Ajax调用来处理的。现在,我不相信您可以更改总金额,因为不会重新创建订单。如果您查看官方店面主题,则可以看到加载动画。这意味着该订单已经过验证,但已经创建,因此将不会调用woocommerce_checkout_create_order。您可以实现custom payment gateway。