结账时会显示新的字段,但不会保存在订单详细信息中

时间:2020-10-09 作者:Castiblanco

我在WooCommerce结账时添加自定义字段时遇到问题,我正在使用以下代码:

add_filter(\'woocommerce_checkout_fields\',\'custom_override_checkout_fields\');
function custom_override_checkout_fields($fields) {
    $fields[\'billing\'][\'billing_colonia\'] = array(
        \'label\' => __(\'Colonia\', \'woocommerce\'),
        \'placeholder\' => _x(\'\', \'placeholder\', \'woocommerce\'),
        \'required\' => true,
        \'class\' => array(\'form-row-wide\'), 
        \'clear\' => true
    );
    
    $fields[\'shipping\'][\'shipping_colonia\'] = array(
        \'label\' => __(\'Colonia\', \'woocommerce\'),
        \'placeholder\' => _x(\'\', \'placeholder\', \'woocommerce\'),
        \'required\' => true,
        \'class\' => array(\'form-row-wide\'), 
        \'clear\' => true
    );
    return $fields;
}
它确实在结帐表单上显示了该字段,但我填写了该字段并完成了一个订单,关于此新字段的任何内容都不会保存在/wp admin/edit的任何订单上。php?post\\u类型=车间订单

我应该做些什么来保存这些信息吗?在此处添加自定义字段的正确方法是什么?

1 个回复
最合适的回答,由SO网友:Ivan Shatsky 整理而成

据我所知,您需要通过以下方式手动保存自定义字段值woocommerce_checkout_update_order_meta 钩尝试

add_action( \'woocommerce_checkout_update_order_meta\', \'custom_checkout_fields_update_order_meta\' );
function custom_checkout_fields_update_order_meta( $order_id ) {
    update_post_meta( $order_id, \'billing_colonia\', sanitize_text_field( $_POST[\'billing_colonia\'] ) );
    update_post_meta( $order_id, \'shipping_colonia\', sanitize_text_field( $_POST[\'shipping_colonia\'] ) );
}

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: