Надеюсь, меня не накажут за это, мой первоначальный вопрос заключался в добавлении выбранного значения в адрес электронной почты и использовании эффекта сворачивания optgroup, однако мне сказали, что вопрос был слишком широким, поэтому я удалил jquery теги и эффект и ограничиваю себя только php и получением его по электронной почте.
php было в порядке, я просто мог получить его по электронной почте, плюс мне нужна была optgroup.
Я сделал что-то еще, я просто использовал jquery вместо полного php, я создал поле текстового типа и получил его для отправки ответа по электронной почте, затем я создал модальное окно вручную (не хотел использовать bootstrap), затем обычный html для optgroup и используйте jquery, чтобы получить выбранное значение и вставить в текстовое поле. вот мой код.
html - это базовый c, который вы можете найти здесь
И css вы можете использовать это в качестве примера, тогда бот css и html необходимо будет изменить по мере необходимости
php
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="myZoneLimit"><h2>' . __('valida tu zona') . '</h2>';
woocommerce_form_field( 'my_field_limit', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __('Enter something'),
), $checkout->get_value( 'my_field_limit' ));
echo '</div>';
}
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
// Check if set, if its not set add an error.
if ( ! $_POST['my_field_limit'] )
wc_add_notice( __( 'Por favor seleccione su zona de envio.' ), 'error' );
}
add_filter('woocommerce_email_order_meta_keys', 'my_custom_order_meta_keys');
function my_custom_order_meta_keys( $keys ) {
$keys[] = 'valida tu zona'; // This will look for a custom field called 'Tracking Code' and add it to emails
return $keys;
}
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 ( ! empty( $_POST['my_field_limit'] ) ) {
update_post_meta( $order_id, 'valida tu zona', sanitize_text_field( $_POST['my_field_limit'] ) );
}
}
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>'.__('valida tu zona').':</strong> ' . get_post_meta( $order->id, 'valida tu zona', true ) . '</p>';
My jquery
/// button that opens the modal that was created the html
$("#my_field_limit").click(function(){
$("#myModalarea").show();
});
//// get the value from the selected option and place in into the the text field
$('#coveredareas').change(function(){
var areazone = $(this).val();
$("#my_field_limit").val(areazone);