PHP初心者の質問を許してください...ギフトラッピング用のカスタムチェックボックスをwoocommerceカートに追加しました。カスタム メタ ボックスと注文概要の「注文」ページに値を返すことはできますが、null または「1」として返す値しか取得できません。「はい」または「いいえ」の値を返したいです。アドバイスをよろしくお願いします。
これが私のFunctions.PHPで使用しているコードです(WOOCOMMERCEのドキュメントからカスタマイズされています):
/チェックアウトにギフトラッピングフィールドを追加/
add_action('woocommerce_after_order_notes', 'gift_wrapping_field');
function gift_wrapping_field( $checkout )
{
woocommerce_form_field( 'gift_wrapping', array(
'type' => 'checkbox',
'class' => array('input-checkbox'),
'label' => __('Include Free Gift Wrapping'),
'required' => false,
), $checkout->get_value( 'gift_wrapping' ));
}
/チェックアウトの処理/
add_action('woocommerce_checkout_process', 'gift_wrapping_field_process');
function my_custom_checkout_field_process()
{
global $woocommerce;
// Check if set, if its not set add an error.
if (!$_POST['terms_conditions'])
$woocommerce->add_error( __('Please agree to terms and conditions.') );
}
/フィールド値で注文メタを更新します/
add_action('woocommerce_checkout_update_order_meta', 'gift_wrapping_field_update_order_meta');
function gift_wrapping_field_update_order_meta( $order_id )
{
if ($_POST['gift_wrapping']) update_post_meta( $order_id, 'Include Free Gift Wrapping', esc_attr($_POST['gift_wrapping']));
}
/*Update the order summary with field value*/
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>'.__('Include Free Gift Wrapping').':</strong> ' . $order->order_custom_fields['Include Free Gift Wrapping'][0] . '</p>';
}
フォームの結果から管理者に返される内容のスクリーンショットを次に示します。