• Hello, I have created a custom field with a substitution criteria within the woocommerce checkout.

    Now I need that field to appear in the invoices and in the shipping notes and packing slips.

    Este es el código para el campo personalizado

    //* A?adimos el campo select en el formulario, antes del campo de notas
    add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field');
    function wps_add_select_checkout_field( $checkout ) {
        echo '<h3>'.__('Criterio de sustitución').'</h3><p>En el caso de tener faltante en el stock de algún producto de tu pedido y para agilizar el envío del mismo, te pedimos que nos indiques alguna de estas acciones</p>';
        woocommerce_form_field( 'criteriosustitucion', array(
        'type' => 'select',
        'class' => array( 'wps-drop' ),
        'label' => __( 'Opciones de sustitución' ),
        'options' => array(
            'blank' => __( 'Seleccione una opción', 'wps' ),
            'Reemplazar por producto similar' => __( 'Quiero que lo reemplacen por otro producto similar de la linea', 'wps' ),
            'Dinero a crédito para futura compra' => __( 'Quiero que mi dinero quede a crédito para mi próxima compra', 'wps' ),
            )
        ),
        $checkout->get_value( 'criteriosustitucion' ));
    }
    
    //* Revisamos el campo en el proceso de envío del formulario:
     add_action('woocommerce_checkout_process', 'wps_select_checkout_field_process');
     
    function wps_select_checkout_field_process() {
     global $woocommerce;
     // Si está seleccionada la opción 'blank', lanza un error
     if ($_POST['criteriosustitucion'] == "blank")
     wc_add_notice( '<strong>Por favor, seleccione una de las opciones de sustitución</strong>', 'error' );
    }
    
    //* Guardamos los datos del campo
     add_action('woocommerce_checkout_update_order_meta', 'wps_select_checkout_field_update_order_meta');
     function wps_select_checkout_field_update_order_meta( $order_id ) {
            if ($_POST['criteriosustitucion']) update_post_meta( $order_id, 'criteriosustitucion', esc_attr($_POST['criteriosustitucion']));
     }
    
    //* Mostramos el valor del campo en el pedido
    add_action( 'woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
    function wps_select_checkout_field_display_admin_order_meta($order){
            echo '<br><p><strong>'.__('Criterio de sustitución').':</strong> ' . get_post_meta( $order->id, 'criteriosustitucion', true ) . '</p>';
    }
    //* y en los emails de confirmación de pedido
    add_filter('woocommerce_email_order_meta_keys', 'wps_select_order_meta_keys');
    function wps_select_order_meta_keys( $keys ) {
     
           $keys['Criterio de sustitución'] = 'criteriosustitucion';
           return $keys;
     
    }

    If anyone could help me with the code to do this I would be very grateful.

    • This topic was modified 2 years, 4 months ago by tonga77.

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
  • The topic ‘Incorporate to the printing of Invoice and Shipping Note’ is closed to new replies.