2017-10-19 28 views
1

私は顧客に私のwoocommerceストアのチェックアウトページの「ビジネスアドレスに配送」オプションを与えるためにカスタムチェックアウトフィールドを使用しています。ほとんどのコードは正常に動作していますが、バックエンドの管理者の詳細でボックスをチェックしたかどうかを表示することはできません。Woocommerceは管理注文詳細のカスタムフィールドデータを表示します

私はwoocommerceショップにカスタムチェックアウトフィールドを追加し、注文メタにデータが保存されている:私は管理者のためのセクションで、このデータを表示しようとするところ

//add custom checkout field 
add_filter('woocommerce_after_checkout_billing_form', 'gon_business_address_checkbox_field'); 

function gon_business_address_checkbox_field($checkout){ 
    woocommerce_form_field('business_address_checkbox', array(
     'label'  => __('<h3 id="business_address_label">Check this box if you are shipping to a business.</h3>', 'woocommerce'), 
     'required' => false, 
     'clear'  => false, 
     'type'  => 'checkbox' 
    ), $checkout->get_value('business_address_checkbox')); 
} 


//update order meta 
add_action('woocommerce_checkout_update_order_meta', 'gon_update_order_meta_business_address'); 

function gon_update_order_meta_business_address($order_id) { 
    if ($_POST['business_address_checkbox']) update_post_meta($order_id, 'Business Address?', 
    esc_attr($_POST['business_address_checkbox'])); 
} 

がここにあります。私はこれまでの話題を可能な限り厳密に追ってきましたが、役に立たなかったのです。

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

function my_custom_checkout_field_display_admin_order_meta($order){ 
    echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . get_post_meta($order->get_id(), '_business_address_checkbox', true) . '</p>'; 
} 

正しい方法でチェックボックスを使用していない可能性がありますか?

add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); 
function my_custom_checkout_field_order_meta_keys() { 
    if($_POST['business_address_checkbox']){ 
     $ship_to = 'YES'; 
    } else { 
     $ship_to = 'NO'; 
    } 
    echo '<h3>Ship to a business address? : '.$ship_to.'</h3>'; 
} 

答えて

1

あなたがmeta_key使用して、このカスタムフィールドのデータを保存しているとして:'Business Address?'を...だからあなたは独特の事は、私はこのコードを使用することにより、望むように私が注文の電子メールに印刷する情報を取得していますということですこの方法のデータを取得するために、このmeta_keyを使用する必要があります。

// Display field value on the admin order edit page 
add_action('woocommerce_admin_order_data_after_shipping_address', 'custom_checkout_field_display_admin_order_meta', 10, 1); 
function custom_checkout_field_display_admin_order_meta($order){ 
    $business_address = get_post_meta($order->get_id(), 'Business Address?', true); 
    if(! empty($business_address)) 
     echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . $business_address . '</p>'; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

WooCommerce 3で動作確認済みです。

+0

ありがとうございます@LoicTheAztec。私はupdate_post_meta()関数を誤解しているようです。今正しく働く! Uは私の目の真の戦士です。 – peanutSquiggle

関連する問題