【问题标题】:Getting value from custom checkout billing field in WooCommerce从 WooCommerce 中的自定义结帐计费字段中获取价值
【发布时间】:2020-10-21 09:47:56
【问题描述】:

我在结帐处添加了一个字段,遵循woocommerce documentation 这种方式:

/*Add document ID to checkout form*/
add_filter( 'woocommerce_checkout_fields' , 'ebani_cedula_checkout_field' );

// Our hooked in function - $fields is passed via the filter!
function ebani_cedula_checkout_field( $fields ) {
    $fields['billing']['cedula'] = array(
        'label'     => __('Cédula de ciudadanía', 'woocommerce'),
        'placeholder'   => _x('Cédula', 'placeholder', 'woocommerce'),
        'required'  => true,
        'class'     => array('form-row-last'),
        'clear'     => true,
        'priority' => 15
    );

     return $fields;
}

那我想在管理员订单编辑页面这样显示:

/**
 * Display field value on the order edit page
 */
 add_action( 'woocommerce_admin_order_data_after_billing_address', 'cedula_checkout_field_display_admin_order_meta', 10, 1 );
    
 function cedula_checkout_field_display_admin_order_meta($order){
        echo '<p><strong>'.__('Cédula').':</strong> ' . get_post_meta( $order->get_id(), '_cedula', true ) . '</p>';
 }

当我转到订单编辑页面时,我得到一个空值 _cedula 我不知道为什么,我只是按照文档进行操作,但它不起作用,我怎样才能获取存储在自定义结帐字段?

【问题讨论】:

    标签: php wordpress woocommerce field checkout


    【解决方案1】:

    如果您希望在下订单时保存此自定义结算字段,最好使用 动作挂钩 woocommerce_billing_fields 而不是 woocommerce_checkout_fields 喜欢:

    add_filter( 'woocommerce_billing_fields' , 'ebani_cedula_checkout_field' );
    function ebani_cedula_checkout_field( $fields ) {
        $fields['billing_cedula'] = array(
            'label'       => __('Cédula de ciudadanía', 'woocommerce'),
            'placeholder' => _x('Cédula', 'placeholder', 'woocommerce'),
            'required'    => true,
            'class'       => array('form-row-last'),
            'clear'       => true,
            'priority'    => 15
        );
        return $fields;
    }
    
    add_action( 'woocommerce_admin_order_data_after_billing_address', 'cedula_checkout_field_display_admin_order_meta', 10, 1 );
    function cedula_checkout_field_display_admin_order_meta($order){
        if( $value = $order->get_meta('_billing_cedula') )
            echo '<p><strong>'.__('Cédula').':</strong> ' . $value . '</p>';
    }
    

    现在您的自定义结帐结算字段已保存。

    【讨论】:

    • 谢谢!所以这意味着文档是错误的或过时的?
    • @svelandiag 这有点过时且不完整(更专注于结帐字段),因为 WooCommerce 销售允许字段自定义的第三方插件。
    猜你喜欢
    • 2019-01-16
    • 2018-07-19
    • 2019-04-24
    • 1970-01-01
    • 2018-02-06
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多