php 在Woocomerce中创建运费和交货日期字段

ctrmrzij  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(150)

我需要知道如何在WordPress/WooCommerce中从PHP创建两个新字段。该字段应添加到结帐和一个应该是运输成本和其他交货日。这些应该在采购订单中从管理方收到。最初,我需要它们是开放的文本字段,可以从前端的WooCommerce结帐看到。
如果您需要更多信息,我需要了解如何发送这些字段,因为我正在实现一个JS模块来创建一个运输成本计算器,这也允许我发送交货日期。例如:
布宜诺斯艾利斯〉〉运费:500交货日:星期一
纽约〉〉运费:1000交货日:星期二
我尝试通过添加WooCommerce过滤器,注册字段并将其添加到购买订单列来完成。但这些都没用。

hgb9j2n6

hgb9j2n61#

你可以试试这段代码,并添加你的JS模块来创建运费计算器。

/**
 * Add custom field to the checkout page
 */
add_action( 'woocommerce_after_order_notes', function ( $checkout ) {
    echo '<div id="custom_checkout_field"><h2>' . __( 'Order Meta' ) . '</h2>';
    woocommerce_form_field( 'custom_shipping_cost',
        array(
            'type'  => 'number',
            'required'  => true,
            'label' => __( 'Custom Shipping Cost' ),
        ),
        $checkout->get_value( 'custom_shipping_cost' )
    );
    woocommerce_form_field( 'custom_shipping_date',
        array(
            'type'  => 'date',
            'required'  => true,
            'label' => __( 'Custom Shipping Date' ),
        ),
        $checkout->get_value( 'custom_shipping_date' )
    );
    echo '</div>';
} );

/**
 * Checkout Process
 */
add_action( 'woocommerce_checkout_process', 'customised_checkout_field_process' );
function customised_checkout_field_process() {
    if ( ! $_POST['custom_shipping_cost'] ) {
        wc_add_notice( __( 'Please enter cost!' ), 'error' );
    }
    
    if ( ! $_POST['custom_shipping_date'] ) {
        wc_add_notice( __( 'Please enter date!' ), 'error' );
    }
}

/**
 * Update the value given in custom field
 */
add_action( 'woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta' );
function custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['custom_shipping_cost'] ) ) {
        update_post_meta( $order_id, 'custom_shipping_cost', sanitize_text_field( $_POST['custom_shipping_cost'] ) );
    }
    
    if ( ! empty( $_POST['custom_shipping_date'] ) ) {
        update_post_meta( $order_id, 'custom_shipping_date', sanitize_text_field( $_POST['custom_shipping_date'] ) );
    }
}

相关问题