Home>Guide>Come aggiungere la colonna metodo di pagamento in WooCommerce

Come aggiungere la colonna metodo di pagamento in WooCommerce


Come aggiungere la colonna metodo di pagamento in WooCommerce

Diciamoci la verità, ogni e-commerce ha esigenze diverse e la gestione di un negozio online non segue sempre le stesse regole. Ma in tutti gli e-commerce che abbiano la possibilità di utilizzare più di un metodo di pagamento, c’è un’esigenza comune: visualizzare già nell’elenco degli ordini di WooCommerce, nella sezione admin, il metodo di pagamento utilizzato dal cliente, senza dover necessariamente aprire la pagina di dettaglio relativa all’ordine stesso.
Sarebbe comodo, non trovi?

  • Leggi l'articolo, ti bastano solo 1 minuto, 19 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Aggiungiamo la nuova colonna

Il primo passo da eseguire è aggiungere una nuova colonna alla pagina di elenco ordini presente nella sezione admin del tuo WordPress/WooCommerce.
Per farlo, basta modificare il file functions.php del tuo tema, che trovi in:

wp-content/themes/{nome_del_tema}/

che trovi nello spazio FTP del tuo sito ed inserire queste piccole porzioni di codice:

// Aggiunge la colonna Metodo di pagamento
add_filter( 'manage_edit-shop_order_columns', function( $columns ) {
    $columns['payment'] = __( 'Payment Method', 'code4life' );
    return $columns;
}, 20 );

// Aggiunge il contenuto della colonna Metodo di pagamento
add_action( 'manage_shop_order_posts_custom_column', function( $column ) {
    global $post;
    if ( 'payment' === $column ) {
        $order = wc_get_order( $post->ID );
        echo $order->get_payment_method_title();
    }
} );

// Rende la colonna ordinabile
add_filter( 'manage_edit-shop_order_sortable_columns', function( $columns ) {
    $columns['payment'] = 'payment';
    return $columns;
} );

Qualche assiduo lettore starà avendo una strana sensazione di deja-vu. Se sei tra questi, non hai tutti i torti. Effettivamente, abbiamo già visto come aggiungere una colonna personalizzata in WordPress, ecco perché mi sono limitato a riportarne solamente il codice (con le dovute variazioni); se desideri approfondire o rinfrescare l’argomento, dai un’occhiata a:


Ecco il risultato finale:


Filtrare gli ordini per metodo di pagamento

Abbiamo appena imparato ad aggiungere la colonna Metodo di pagamento all’elenco degli ordini di WooCommerce nel pannello admin di WordPress, ma non sarebbe bello poter filtrare gli ordini proprio in base al metodo di pagamento utilizzato dal cliente?
Io lo trovo davvero molto comodo, ecco perché ti spiegherò come fare.

Per aggiungere il filtro, è sufficiente inserire sempre nel file functions.php del tuo tema, che trovi in:

wp-content/themes/{nome_del_tema}/

il seguente codice:

// Aggiungo il filtro per argomenti agli articoli
add_action( 'restrict_manage_posts', function( $post_type, $which ) {
    // Applico solamente agli articoli
    if ( 'shop_order' !== $post_type ) { return; }
 
    // Recupero i termini della tassonomia
    $payments = WC()->payment_gateways->get_available_payment_gateways();
 
    // Visualizzo il filtro
    echo '<select name="payment" id="payment" class="postform">';
    echo '<option value="">' . esc_html__( 'All payment methods', 'code4life' ) . '</option>';
 
    // Visualizzo le opzioni
    foreach ( $payments as $payment ) {
        printf(
            '<option value="%1$s" %2$s>%3$s</option>',
            $payment->id,
            ( ( isset( $_GET['payment'] ) && ( $_GET['payment'] == $payment->id ) ) ? ' selected="selected"' : '' ),
            $payment->title
        );
    }
    echo '</select>';
}, 10, 2 );

Anche in questo caso, una guida simile è stata già approfondita e spiegata in passato:


ma nel caso degli ordini di WooCommerce la situazione è leggermente diversa. Infatti, vedrai comparire il menu a tendina contenente i metodi di pagamento, ma provando a sceglierne uno, non c’è alcun cambiamento. Come mai?
Semplice, rispetto a quanto succede per gli articoli, è necessario aggiungere un’altra funzione, sempre nel file functions.php:

// Filtra gli ordini in base al metodo di pagamento scelto
add_filter( 'pre_get_posts', function( $query ) {
    if ( ! $query->is_main_query() || ! isset( $_GET['payment'] ) ) {
        return;
    }
    $payment = sanitize_text_field( $_GET['payment'] );
    $query->set( 'meta_query', array(
        array(
            'key' => '_payment_method',
            'compare' => '=',
            'value' => $payment,
        )
    ) );
} );

ed il gioco è fatto! Ecco finalmente il risultato finale:



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Come disattivare Gutenberg su WordPress

Come disattivare Gutenberg su WordPress


Scopri come disattivare Gutenberg ed abilitare nuovamente l’editor “classico”

Come importare i prodotti in WooCommerce

Come importare i prodotti in WooCommerce


Scopri come importare massivamente un gran numero di prodotti in WooCommerce in un solo colpo!


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)