繁体   English   中英

在结帐中添加自定义字段并在 WooCommerce 管理订单页面中显示

[英]Add custom field in checkout and display it in WooCommerce admin order pages

在 WooCommerce 中,我正在尝试使用“使用操作和过滤器自定义结帐字段”官方文档添加自定义字段以进行结帐。 所以我可以看到该字段并且效果很好,但问题是当我试图在管理面板中查看客户输入的信息时。

我正在使用简单的显示钩子来查看触发了哪些钩子等等。 而且我看不到woocommerce_admin_order_data_after_shipping_address触发。 我错过了什么?! 这是我在functions.php文件中的代码:

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
     unset($fields['billing']['billing_address_2']);
     unset($fields['shipping']['shipping_address_2']);
          $fields['billing']['shipping_time'] = array(
            'type' => 'select',
        'label'     => __('Laikas', 'woocommerce'),
    'placeholder'   => _x('Laikas', 'placeholder', 'woocommerce'),
    'required'  => true,
    'class'     => array('form-row-wide'),
    'clear'     => true,
    'options' => array(
        'option_1' => 'nesvarbu',
        'option_2' => '8-12',
        'option_3' => '12-16',
        'option_4' => '16-20'
        )
     );


     return $fields;
}

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    global $post_id;
    $order = new WC_Order( $post_id );
    echo '<p><strong>'.__('Laikas').':</strong> ' . get_post_meta($order->get_id(), '_shipping_ftime', true ) . '</p>';
}

在此处输入图像描述

add_filter( 'woocommerce_checkout_fields', 'custom_override_checkout_fields' );

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
    unset( $fields[ 'billing' ][ 'billing_address_2' ] );
    unset( $fields[ 'shipping' ][ 'shipping_address_2' ] );
    $fields[ 'billing' ][ 'shipping_time' ] = array(
        'type'           => 'select',
        'label'          => __( 'Laikas', 'woocommerce' ),
        'placeholder'    => _x( 'Laikas', 'placeholder', 'woocommerce' ),
        'required'       => true,
        'class'          => array( 'form-row-wide' ),
        'clear'          => true,
        'options'        => array(
            'option_1'   => 'nesvarbu',
            'option_2'   => '8-12',
            'option_3'   => '12-16',
            'option_4'   => '16-20'
        )
    );


    return $fields;
}

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta( $order ) {
    global $post_id;
    $order = new WC_Order( $post_id );
    $options         = array(
            'option_1'   => 'nesvarbu',
            'option_2'   => '8-12',
            'option_3'   => '12-16',
            'option_4'   => '16-20'
        );
    echo '<p><strong>' . __( 'Laikas' ) . ':</strong> ' . $options[get_post_meta( $order->get_id(), '_shipping_time', true )] . '</p>';
}

请试试这个片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM