Поддержка Проблемы и решения Checkout field Woocommerce

  • Решено protsport4991

    (@protport4991)


    Я добавляю два поля в checkout, но в админ часть(в информацию о заказе
    ) у меня заносится только одно, как в информацию о заказе занести два поля.

    // Додавання полей
    add_filter( 'woocommerce_checkout_fields' , 'custom_store_pickup_field_one');
     
    function custom_store_pickup_field_one( $fields ) {
          $fields['shipping']['store_pickup'] = array(
         		'type'     => 'text',
         		'placeholder' => "Recipient's first name",
    		    'label'     => __('First Name:', 'woocommerce'),
    		    'required'  => true,
    		    'class'     => array('store-pickup form-row-wide validate-required'),
    		    'clear'     => true
         );
         return $fields;
    }
    
    add_filter( 'woocommerce_checkout_fields' , 'custom_store_pickup_field_two');
     
    function custom_store_pickup_field_two( $fields ) {
          $fields['shipping']['store_pickup1'] = array(
         		'type'     => 'text',
         		'placeholder' => "Recipient's last name",
    		    'label'     => __('Last Name:', 'woocommerce'),
    		    'required'  => true,
    		    'class'     => array('store-pickup form-row-wide validate-required'),
    		    'clear'     => true
         );
         return $fields;
    }
    
    // Обновление
    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['store_pickup'] ) ) {
            update_post_meta( $order_id, 'My Field', sanitize_text_field( $_POST['store_pickup'] ) );
        }
    }
    
    // Отображение
    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){
        echo '<p><strong>'.__('Prefer to Pick-Up (First-Name)').':</strong> ' . get_post_meta( $order->id, 'My Field', true ) . '</p>';
    }
    • Тема изменена 6 лет, 4 месяца назад пользователем protsport4991.
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Yuri

    (@yube)

    update_post_meta для ‘store_pickup’ вижу, а для ‘store_pickup1’ — нет.

    На всякий случай выложу готовый код

    // Додавання полей
    add_filter( 'woocommerce_checkout_fields' , 'custom_store_pickup_field_one');
     
    function custom_store_pickup_field_one( $fields ) {
          $fields['shipping']['store_pickup'] = array(
         		'type'     => 'text',
         		'placeholder' => "Recipient's first name",
    		    'label'     => __('First Name:', 'woocommerce'),
    		    'required'  => true,
    		    'class'     => array('store-pickup form-row-wide validate-required'),
    		    'clear'     => true
         );
             $fields['shipping']['store_pickup1'] = array(
         		'type'     => 'text',
         		'placeholder' => "Recipient's last name",
    		    'label'     => __('Last Name:', 'woocommerce'),
    		    'required'  => true,
    		    'class'     => array('store-pickup form-row-wide validate-required'),
    		    'clear'     => true
         );
         return $fields;
    }
    
    // Обновление
    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['store_pickup'] ) ) {
            update_post_meta( $order_id, 'My Field1', sanitize_text_field( $_POST['store_pickup'] ) );
        }
        if ( ! empty( $_POST['store_pickup1'] ) ) {
            update_post_meta( $order_id, 'My Field2', sanitize_text_field( $_POST['store_pickup1'] ) );
        }
    }
    // Отображение
    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){
        echo '<p><strong>'.__('Prefer to Pick-Up (First-Name)').':</strong> ' . get_post_meta( $order->id, 'My Field1', true ) . '</p>';
        echo '<p><strong>'.__('Prefer to Pick-Up (Last-Name)').':</strong> ' . get_post_meta( $order->id, 'My Field2', true ) . '</p>';
    }
    
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Checkout field Woocommerce» закрыта для новых ответов.