web-dev-qa-db-fra.com

Ajouter une note de commande personnalisée par programme dans les pages de modification de la commande d'administration de Woocommerce

Dans woocommerce, j'essaie d'ajouter une note de commande personnalisée dans les pages de modification de la commande administrateur via php (donc par programme). Je n'ai pas encore trouvé le chemin.

Toute aide serait appréciée.

WooCommerce order note in the order admin page

6
Max

À partir d'un ID de commande dynamique, vous pouvez utiliser la méthode WC_Orderadd_order_note() de cette façon:

// If you don't have the WC_Order object (from a dynamic $order_id)
$order = wc_get_order(  $order_id );

// The text for the note
$note = __("This is my note's text…");

// Add the note
$order->add_order_note( $note );

Testé et fonctionne.

21
LoicTheAztec

Merci les gars, j'essayais de trouver un moyen d'ajouter les notes à une nouvelle commande. Je cherchais le bon crochet en utilisant la solution publiée par @LoicTheAztec. C'est la solution qui a fonctionné pour moi, j'espère qu'elle aidera quelqu'un d'autre là-bas.

ajoutez ceci au fichier Functions.php

add_action( 'woocommerce_new_order', 'add_engraving_notes',  1, 1  );

function add_engraving_notes( $order_id ) {
 //note this line is different 
 //because I already have the ID from the hook I am using.
 $order = new WC_Order( $order_id ); 

 // The text for the note
 $note = __("Custom Order Note Here");

 // Add the note
 $order->add_order_note( $note );

 // Save the data
 $order->save();
}
2
DevTurtle

Ce code fera l'affaire pour que vous ajoutiez du code dans functions.php

                    add_action('woocommerce_after_order_notes', 'customise_checkout_field');

                    function customise_checkout_field($checkout)
                    {
                    echo '<div id="customise_checkout_field"><h2>' . __('Heading') . '</h2>';
                    woocommerce_form_field('customised_field_name', array(
                    'type' => 'text',
                    'class' => array(
                    'my-field-class form-row-wide'
                    ) ,
                    'label' => __('Customise Additional Field') ,
                    'placeholder' => __('Guidence') ,
                    'required' => true,
                    ) , $checkout->get_value('customised_field_name'));
                    echo '</div>';
                    }

Pour la validation des données du champ personnalisé, utilisez le code ci-dessous:

                    add_action('woocommerce_checkout_process', 'customise_checkout_field_process');

                    function customise_checkout_field_process()
                    {
                        // if the field is set, if not then show an error message.
                        if (!$_POST['customised_field_name']) wc_add_notice(__('Please enter value.') , 'error');
                    }

Mettre à jour la valeur du champ

                    add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');

                    function customise_checkout_field_update_order_meta($order_id)
                    {
                        if (!empty($_POST['customised_field_name'])) {
                            update_post_meta($order_id, 'Some Field', sanitize_text_field($_POST['customised_field_name']));
                        }
                    }
0
Zaheer Abbas