2016-07-22 6 views
0

ですから、私のストアに2番目のカスタムチェックアウトフィールドを追加することができません。複数のwoocommerceカスタムオーダーチェックアウトフィールド

最初のカスタムフィールドはラジオボタンで、テンプレートフィールドに直接追加されます。もう1つは同じラジオボタンですが、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

保存するには、プライベートラベルを登録する必要があります。チェックアウトフィールドエディタをダウンロードし、学習目的でコードを調べることをお勧めします。比較は常に私の経験から続く良いモデルでした:)

関連する問題