[Résolu] Afficher le mode de paiement dans la liste des commandes (Créer un compte)

  • WordPress :5.7
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2372266
    DeNiinhO
    Participant
    Initié WordPress
    12 contributions

    Ma configuration WP actuelle

    Problème(s) rencontré(s) :

    Bonjour tout le monde 🙂

    Je rencontre un “problème” tout bête. Voilà des années que j’utilise WordPress et je suis étonné que cette question ne se soit jamais posée.
    En gros, j’ai besoin d’afficher le mode de paiement utilisé sur la page des commandes de l’administration woocommerce. Et idéalement, j’aimerai pouvoir filtrer mes commandes par type de paiement (n’afficher que celles payées par chèque par exemple).

    Au cas où je ne m’exprime pas correctement, je vous mets une capture d’écran de la page sur laquelle je souhaiterai voir apparaitre une colonne “type de paiement”.

    Je suis preneur de toutes les solutions, je n’ai rien trouvé en creusant un peu sur Google.

    Merci à vous 🙂

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2372281
    momofr@free.fr
    Modérateur
    Maître WordPress
    4110 contributions

    Salut, il n’y a pas de fonctionnalité de ce genre par défaut dans WooCommerce.

    Il te faut ajouter ces fonctions via ton thème enfant ou en utilisant l’extension Code Snippet.

    1 – Fonction à ajouter pour afficher une colonne pour les modes de paiements dans la page des commandes :

    // AFFICHER UNE COLONNE DES MODES DE PAIEMENTS DANS LA PAGE DES COMMANDES WOOCOMMERCE
    add_filter( 'manage_edit-shop_order_columns', 'add_payment_method_column', 20 );
    function add_payment_method_column( $columns ) {
     $new_columns = array();
     foreach ( $columns as $column_name => $column_info ) {
     $new_columns[ $column_name ] = $column_info;
     if ( 'order_total' === $column_name ) {
     $new_columns['order_payment'] = __( 'Mode de paiement', 'my-textdomain' );
     }
     }
     return $new_columns;
    }
    add_action( 'manage_shop_order_posts_custom_column', 'add_payment_method_column_content' );
    function add_payment_method_column_content( $column ) {
     global $post;
     if ( 'order_payment' === $column ) {
     $order = wc_get_order( $post->ID );
     echo $order->payment_method_title;
     }
    }

    2 – Fonction à ajouter pour afficher une option de filtrage par mode de paiement dans la page des commandes :

    // AFFICHER UN FILTRE PAR MODE DE PAIEMENT DANS LA PAGE DES COMMANDES WOOCOMMERCE
    function add_filter_by_payment_method_orders() {
        global $typenow;
        if ( 'shop_order' === $typenow ) {
            // get all payment methods
            $gateways = WC()->payment_gateways->payment_gateways();
            ?>
            <select name="_shop_order_payment_method" id="dropdown_shop_order_payment_method">
                <option value=""><?php esc_html_e( 'Tous les modes de paiement', 'text-domain' ); ?></option>
                <?php foreach ( $gateways as $id => $gateway ) : ?>
                <option value="<?php echo esc_attr( $id ); ?>" <?php echo esc_attr( isset( $_GET['_shop_order_payment_method'] ) ? selected( $id, $_GET['_shop_order_payment_method'], false ) : '' ); ?>>
                    <?php echo esc_html( $gateway->get_method_title() ); ?>
                </option>
                <?php endforeach; ?>
            </select>
            <?php
        }
    }
    add_action( 'restrict_manage_posts', 'add_filter_by_payment_method_orders', 99 );
    
    /**
     * Process bulk filter order for payment method
     *
     */
    function add_filter_by_payment_method_orders_query( $vars ) {
        global $typenow;
        if ( 'shop_order' === $typenow && isset( $_GET['_shop_order_payment_method'] ) ) {
            $vars['meta_key']   = '_payment_method';
            $vars['meta_value'] = wc_clean( $_GET['_shop_order_payment_method'] );
        }
        return $vars;
    }
    add_filter( 'request', 'add_filter_by_payment_method_orders_query', 99 );

    Si tu n’as pas de thème enfant je te conseille vivement d’en ajouter un et de l’activer (en récupérant les réglages de ton thème actuel), cela te permet de personnaliser ton thème et de pérenniser tes modifications.

    Avec un thème enfant tu peux mettre les 2 fonctions ci-dessus dans le fichier functions.php du thème enfant.

    L’autre solution et d’utiliser l’extension Code Snippet pou embarquer ses 2 fonctions.

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2372294
    DeNiinhO
    Participant
    Initié WordPress
    12 contributions

    Punaise génial merci beaucoup ! Oui oui j’ai un thème enfant, j’ai déjà intégré plusieurs fonctions au functions.php du thème enfant, mais je n’avais aucune idée du code à utiliser pour cette fonctionnalité là.

    Merci beaucoup en tout cas, tu viens de me faire gagner un temps précieux 🙂

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.