Woocommerce — запрос обязательной информации о пассажире при оформлении заказа и добавление ее в благодарность, электронPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Woocommerce — запрос обязательной информации о пассажире при оформлении заказа и добавление ее в благодарность, электрон

Сообщение Anonymous »

Я создаю сайт по продаже билетов на экскурсии. Для каждого билета, который вы бронируете, я задаю несколько вопросов каждому пассажиру.
Я написал код, состоящий из 6 разделов:
  • /1 – Создание полей для каждого купленного билета.
  • /2 – Сохранение значений полей.
  • /3 – Проверка.
  • /4 – Добавление информации на экран благодарности.
  • /5 – Отображение информации в электронных письмах.
  • /6 – Отображение в серверная часть

Код: Выделить всё

/*1 - Create the fields for each ticket bought*/
add_action( 'woocommerce_before_order_notes', 'person_details' );
function person_details($checkout) {
global $woocommerce;
$count = $woocommerce->cart->cart_contents_count;
$i = 1;
for($k=1; $k 'text',
'class'         => array('form-row-wide'),
'label'         => __('Full name'),
'placeholder'   => __('Enter full name'),
'required'=> true
),
$checkout->get_value( 'cstm_full_name'.$i ));
echo '';

woocommerce_form_field( 'cstm_gender'.$i, array(
'type'          => 'radio',
'class'         => array('form-row-first validate-required woocommerce-validated'),
'label'         => __('Veuillez indiquer votre sexe ?' ),
'options' => array(
'Homme' => __('Homme','plugin-costarica' ),
'Femme' => __('Femme','plugin-costarica' ),
'Autre' => __('Autre','plugin-costarica' ),
),
'required'=> true
),
$checkout->get_value( 'cstm_gender'.$i ));

woocommerce_form_field( 'cstm_partage'.$i, array(
'type'          => 'radio',
'class'         => array('form-row-last validate-required woocommerce-validated'),
'label'         => __('Êtes-vous d\'accord pour partager votre chambre avec un ou plusieurs autres voyageurs ?' ),
'options' => array(
'Oui' => __('Oui','plugin-costarica' ),
'Non' => __('Non','plugin-costarica' ),
),
'required'=> true
),
$checkout->get_value( 'cstm_partage'.$i ));
echo '';

woocommerce_form_field( 'cstm_infos'.$i, array(
'type'          => 'textarea',
'class'         => array('form-row-wide'),
'label'         => __('Préférences alimentaires et informations médicales','plugin-costarica' ),
'placeholder'   => __('Merci d\'indiquer aussi précisément que possible votre régime alimentaire et toute information, problèmes et antécédents médicaux qui vous paraissent pertinents pour ce voyage.','plugin-costarica'  ),
'required'=> true
),
$checkout->get_value( 'cstm_infos'.$i ));

$i++;}
}

/*2 - Save value of fields */
add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');
function customise_checkout_field_update_order_meta($order_id)
{
global $woocommerce;
$count = $woocommerce->cart->cart_contents_count;
$i = 1;
for($k=1; $kcart->cart_contents_count;
$i = 1;
for($k=1; $kcart->cart_contents_count;
$i = 1;
$message='';
for($k=1; $kget_meta( 'Nom'.$i );
$nom = esc_html($nom);

$gender = $order->get_meta( 'Gender'.$i );
$gender = esc_html($gender);

$partage = $order->get_meta( 'Partage chambre'.$i );
$partage = esc_html($partage);

$infos = $order->get_meta( 'Infos'.$i );
$infos = esc_html($infos);

$message.= '

Nom du voyageur '.$i.'
'.$nom.'


Sexe
'.$gender.'

Partage de chambre
'.$partage.'


Infos additionnelles
'.$infos.'



';

$i++;
}   echo $message;
update_post_meta($order_id, 'message_concatenation', sanitize_text_field($message));
}
add_action('woocommerce_thankyou', 'thankyou', 10, 2 );

//5 - Display infos on emails
function modif_email_commande_exempt_tva( $order, $sent_to_admin, $plain_text, $email ) {
$message_email = $order->get_meta( 'message_concatenation' );
if ( $email->id == 'customer_processing_order')
{echo $message_email;}}
add_action( 'woocommerce_email_after_order_table', 'modif_email_commande_exempt_tva', 20, 4 );

//6 - Display in back-end
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){
$message_backend = get_post_meta( $order->get_id(), 'message_concatenation', true );
if(!empty($message_backend)){echo $message_backend;}
}
1 и 2 в порядке, но у меня много проблем:
  • Я могу подтвердить заказ даже с обязательными полями пусто.
  • Никакая информация не отображается ни в электронном письме, ни в сообщении с благодарностью, ни в серверной части.
Можете ли вы помочь мне ? Я постарался сделать свой код максимально понятным :

Подробнее здесь: https://stackoverflow.com/questions/784 ... and-adding
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»