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.
À partir d'un ID de commande dynamique, vous pouvez utiliser la méthode WC_Order
add_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.
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();
}
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']));
}
}