Créer un statut de commande Woocommerce autorisant le paiement peut s’avérer utile pour les exclure du système de suppression automatique de votre boutique en ligne. Cet article vous explique les limites du système de conservation des données personnelles de Woocommerce, comment créer un nouveau statut personnalisé et le rendre éligible au paiement sur votre site e-commerce.
Conservation des données personnelles et suppression des commandes en attente de paiement
Woocommerce propose nativement un système de gestion des données personnelles permettant en autre, de supprimer automatiquement les commandes en attente après un certain nombre de jours. Ce système accessible depuis la page de gestion des comptes et de confidentialité, permet de définir des périodes de conservation, tant des données que des commandes en attente. Mais si l’on comprend bien la nécessité de mise en conformité de la boutique en ligne aux législations nationales et/ou européennes, ce système peut néanmoins poser des problèmes lorsque certaines commandes sont générées à la volée ou de façon programmatique.
L’idée ici est que si vous générez des commandes côté backoffice pour vos clients, vous n’êtes pour autant pas assuré qu’ils viendront les payer dans le délai imparti. Vous aurez donc besoin de créer un statut spécifique payable, pour vous commande Woocommerce.
Créer un statut personnalisé de commande Woocommerce
Enregistrement d’un statut personnalisé de commande
Les commandes Woocommerce étant des types posts WordPress comme les autres, la création de nouveaux statuts utilise logiquement le processus de création de statuts d’articles du CMS.
Nous passerons donc par le hook « init » ainsi que la fonction register_post_status de WordPress pour initialiser notre statut personnalisé :
N.B. Nous considérons ici que nous programmons un plug-in définissant une classe PHP pour personnaliser notre boutique en ligne Woocommerce.
public function cdw_set_woo_hooks(){
add_action( ‘init’, [ $this, ‘cdw_register_custom_order_statuses’ ] );
}
public function cdw_register_custom_order_statuses(){
register_post_status( 'wc-pendig-inc-fee', [
'label' => __( 'Attente paiement commande complémentaire', ‘cdw’ )
'public' => true,
'show_in_admin_status_list' => true,
'show_in_admin_all_list' => true,
'exclude_from_search' => false,
'label_count' => _n_noop(
__( 'Attente paiement commande complémentaire', ‘cdw’ )
<span class="count">%s</span>',
__( 'Attentes paiement commande complémentaire', ‘cdw’ )
<span class="count">%s</span>',
)
] );
}Ajout du statut personnalisé à la liste des statuts Woocommerce
Woocommerce propose aussi le hook wc_order_statuses permettant d’ajouter tout statut additionnel aux statuts natifs de votre plateforme e-commerce :
Votre devis en 48 H chrono !
Demandez à être rappelé !
Nous préciserons ensemble votre projet
de vive voix
public function cdw_set_woo_hooks(){
…
add_filter( wc_order_statuses, [ $this, ‘cdw_order_statutses’), 20, 1 );
}
public function cdw_order_statutses( $order_statuses ) {
$new_order_statuses = [];
foreach( $order_statuses as $k => $status ){
if( ‘wc-processing’ == $status ){
$new_order_statuses['wc-pendig-inc-fee'] = __( 'Attente paiement frais complémentaire', ‘cdw’ );
}
}
return $new_order_statuses;
}Ajouter le statut aux actions groupées des commandes
Les actions groupées de WordPress vous permettent de gérer collectivement des commandes Woocommerce après les avoir filtrées en back-office…
public function cdw_set_woo_hooks(){
…
add_filter( 'bulk_actions-edit-shop_order', array( $this, 'demants_custom_bulk_actions_dropdown' ) );
}
public function demants_custom_bulk_actions_dropdown( $actions ){
$actions[ 'mark_pendig-inc-fee' ] = __( 'Marquer Attente paiement frais complémentaires', 'cdw' );
return $actions
}N.B. Remarquez le remplacement du préfixe « wc- » par « mark_ » dans le nom de l’action .
Définir un statut de commande éligible au paiement sur Woocommerce
Une fois n’est pas coutume, Woocommerce expose un hook spécifique permettant aux clients de payer une commande définie sur un statut personnalisé. Nous allons donc rendre » notre statut customisé « payable afin de permettre à Woocommerce de purger les commandes en attente de paiement après une période de 30 ou 60 jours (à vous de définir ce qui vous convient). L’action requise est ici :
« woocommerce_valid_order_statuses_for_payment ».
public function cdw_set_woo_hooks(){
…
add_filter( 'woocommerce_valid_order_statuses_for_payment', [ $this, 'cdw_add_payable_statuses' ], 10, 2 );
}
public function 'cdw_add_payable_statuses( $payable_stuses, $order ){
$payable_statuses[]= “pending-inc-fee” ;
return $payable_statuses;
}Et voilà !
Vous disposez désormais d’un statut de commande personnalisé, vous permettant de discossier vos paiement en attente voués à l’échec ou à l’abandon, de vos commandes créées depuis votre back-office.
