2016-07-22 6 views
0

그래서 두 번째 사용자 지정 체크 아웃 필드를 내 저장소에 추가해야합니다.여러 개의 woocommerce 사용자 지정 주문 체크 아웃 필드

첫 번째 사용자 정의 필드는 라디오 버튼이며 템플릿 필드에 바로 추가됩니다. 다른 하나는 동일한 라디오 버튼이지만 ID와 이름이 다릅니다.

배송 부분은 정상적으로 작동하지만 그 부분은 입니다. 개인 라벨은 저장되지 않으며 주문이 완료된 후 관리 영역에 표시되지 않습니다.

내가 이미 가지고있는 것, 내가 뭘 잘못하고 있니?

/** 
* Update the user meta with field value 
**/ 
add_action('woocommerce_checkout_update_user_meta', 'my_custom_checkout_field_update_user_meta'); 
function my_custom_checkout_field_update_user_meta($user_id) { 
    if ($user_id && $_POST['shippinng']) update_user_meta($user_id, 'shippinng', esc_attr($_POST['shippinng'])); 
    if ($user_id && $_POST['private']) update_user_meta($user_id, 'private', esc_attr($_POST['private'])); 
} 


/** 
* Update the order meta with field value 
**/ 
add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id) { 
    if ($_POST['shippinng']) update_post_meta($order_id, 'Transport', esc_attr($_POST['shippinng'])); 
    if ($_POST['private']) update_post_meta($order_id, 'Private label', esc_attr($_POST['private'])); 
} 


/** 
* Display field value on the order edit page 
*/ 
add_action('woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1); 

function my_custom_checkout_field_display_admin_order_meta($order){ 
    echo '<p><strong>'.__('Transport').':</strong> ' . get_post_meta($order->id, 'Transport', true) . '</p>'; 
    echo '<p><strong>'.__('Private label').':</strong> ' . get_post_meta($order->id, 'Private label', true) . '</p>'; 
} 


/** 
* Add the field to order emails 
**/ 
add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); 
function my_custom_checkout_field_order_meta_keys($keys) { 
    $keys[] = 'Transport'; 
    $keys[] = 'Private label'; 
    return $keys; 
} 

답변

0

저장하려면 개인 라벨을 등록해야합니다. 나는 체크 아웃 필드 에디터를 다운로드하고 학습 목적을 위해 코드를 검사 할 것을 조언한다. 비교는 항상 나의 경험에서 따르는 좋은 모델이었습니다 :)

관련 문제