私は顧客に私の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>';
}
ありがとうございます@LoicTheAztec。私はupdate_post_meta()関数を誤解しているようです。今正しく働く! Uは私の目の真の戦士です。 – peanutSquiggle