Mostra tutti i prodotti in una pagina con WooCommerce

26 feb 2013, 00:01:46
Visualizzazioni: 59.5K
Voti: 4

Ho WooCommerce in esecuzione su questo negozio.

Sebbene l'impostazione predefinita sia mostrare 12 prodotti per pagina, il cliente ha richiesto un pulsante "mostra tutto" che eviti all'utente di dover utilizzare la paginazione per vedere gli altri prodotti.

Esiste una funzione che posso eseguire sulla pagina corrente che riesegua il loop ma modifichi la query per mostrare più 'post per pagina'? Ho esaminato i file template di WooCommerce ma non è ovvio come questo venga fatto.

Stavo pensando di passare una variabile GET PHP alla pagina corrente e di testarla per determinare se eseguire la query modificata, così (fuori dal loop):

<a href="<?php 
echo get_permalink( $post->ID ) . "?showall=1"; 
?>">Mostra tutto</a>

E poi avere qualcosa del genere prima del loop dei file template

<?php if($_GET['showall'] = 1){ //qualcosa qui per modificare la query (wp_query forse?? o un filtro woocommerce) } ?>
//il loop come normale

Sono sulla strada giusta? È qualcosa di facile da realizzare in questo modo. Qualsiasi guida su come implementarlo sarebbe apprezzata.

Modifica: OK ho fatto un po' più di ricerche nei template di WooCommerce. Sembra che archive-product.php sia il file che vorrei sovrascrivere.

Ora, specifico già i prodotti per pagina con un filtro nel functions.php del mio tema come segue:

add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 12;' ), 20 );

E ho aggiunto questa riga nel file archive-product.php che ho copiato in cartella del mio tema/woocommerce per sovrascrivere quello predefinito:

        <?php if($_GET['showall']==1){ 
            add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 8;' ), 30 ); 
        } ?>

Quando visito shop_page/?showall=1 il filtro non viene eseguito. Il filtro in functions.php sembra dominare nonostante abbia una priorità inferiore.

1
Commenti

hai controllato la documentazione di WooCommerce? http://wcdocs.woothemes.com/snippets/change-number-of-products-displayed-per-page/

ronald ronald
26 feb 2013 01:32:27
Tutte le risposte alla domanda 3
0

Aggiungi semplicemente il controllo condizionale al tuo file functions.php:

if( isset( $_GET['showall'] ) ){ 
    add_filter( 'loop_shop_per_page', create_function( '$cols', 'return -1;' ) ); 
} else {
    add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 12;' ) );
}
26 feb 2013 03:57:41
0

Arrivato in ritardo alla festa, ma se non devi preoccuparti di PHP 5.2 è più sicuro ed efficiente usare una chiusura:

add_filter( 'loop_shop_per_page', function ( $cols ) {
    return - 1;
} );

(Vedi il manuale PHP su create_function.)

3 mar 2016 18:54:52
0

Ho appena letto il tuo argomento,

Ho creato un plugin apposito per creare un menu a discesa che permette ai visitatori di selezionare il numero di prodotti che desiderano visualizzare.

http://wordpress.org/plugins/woocommerce-products-per-page/

Spero che possa esserti utile nella tua situazione.

8 mar 2014 12:49:39