Php 从WooCommerce中的自定义结帐帐单字段获取值

Php 从WooCommerce中的自定义结帐帐单字段获取值,php,wordpress,woocommerce,field,checkout,Php,Wordpress,Woocommerce,Field,Checkout,我按照以下方式在签出处添加了一个字段: /*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 ) {

我按照以下方式在签出处添加了一个字段:

/*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>';
 }
然后我想在“管理订单编辑”页面上以以下方式显示:

/*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>';
 }
/**
*在订单编辑页面上显示字段值
*/
添加操作('woocommerce\u admin\u order\u data\u after\u billing\u address'、'cedula\u checkout\u field\u display\u admin\u order\u meta',10,1);
函数cedula\u checkout\u field\u display\u admin\u order\u meta($order){
回显“”。“'Cédula'”:”。获取文章元($order->get_id(),“'u cedula',true)。”

; }

当我进入订单编辑页面时,我得到了一个空值,用于
\u cedula
,我不知道为什么,我只是按照文档进行操作,但它不起作用,如何获取存储在自定义签出字段中的数据?

如果您希望在下订单时保存此自定义账单字段,最好使用 操作钩子
woocommerce\u billing\u fields
而不是
woocommerce\u checkout\u 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>';
}
add_filter('woocommerce_billing_fields'、'ebani_cedula_checkout_field');
函数ebani\u cedula\u checkout\u字段($fields){
$fields['billing_cedula']=数组(
‘label’=>‘城市社区’、‘woocommerce’,
“占位符”=>x('Cédula','placeholder','woocommerce'),
“必需”=>true,
'class'=>数组('form-row-last'),
“清除”=>正确,
“优先级”=>15
);
返回$fields;
}
添加操作('woocommerce\u admin\u order\u data\u after\u billing\u address'、'cedula\u checkout\u field\u display\u admin\u order\u meta',10,1);
函数cedula\u checkout\u field\u display\u admin\u order\u meta($order){
如果($value=$order->get\u meta(“\u billing\u cedula”))
回音“”.uuu('Cédula'):”.$value.

”; }

现在,您的自定义结帐账单字段已保存。

谢谢!那么这意味着文档是错误的还是过时的?@svelandiag这有点过时,不完整(更关注签出字段),因为WooCommerce销售允许字段自定义的第三方插件。