Afișează toate produsele pe o singură pagină cu WooCommerce

26 feb. 2013, 00:01:46
Vizualizări: 59.5K
Voturi: 4

Am WooCommerce instalat pe acest magazin.

Deși implicit sunt afișate 12 produse pe o pagină, clientul a solicitat un buton "arată tot" care să evite necesitatea utilizatorului de a folosi paginarea pentru a ajunge la celelalte produse.

Există vreo funcție pe care o pot rula pe pagina curentă care să reexecute bucla dar să modifice interogarea pentru a afișa mai multe 'articole per pagină'? Am căutat prin fișierele template WooCommerce dar nu este evident cum se face acest lucru.

Mă gândeam să transmit o variabilă GET către pagina curentă și să o verific pentru a determina dacă să rulez interogarea modificată, astfel (în afara buclei):

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

Și apoi să am ceva de genul acesta înainte de bucla fișierelor template

<?php if($_GET['showall'] = 1){ //ceva aici pentru a modifica interogarea (wp_query poate?? sau un filtru woocommerce) } ?>
//bucla ca de obicei

Sunt pe drumul cel bun? Este acest lucru ușor de realizat în acest mod? Orice îndrumare despre cum să implementez ar fi apreciată.

Editare: OK, am făcut mai multe căutări prin template-urile WooCommerce. Se pare că archive-product.php este fișierul pe care aș dori să-l suprascriu.

Acum, specific deja produsele per pagină cu un filtru în functions.php al temei mele astfel:

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

Și am adăugat această linie în fișierul archive-product.php pe care l-am copiat în folder-ul temei mele/woocommerce pentru a suprascrie implicit:

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

Când vizitez apoi shop_page/?showall=1 filtrul nu se execută. Filtrul din functions.php pare să domine în ciuda priorității mai mici.

1
Comentarii

ai verificat documentația woocommerce? http://wcdocs.woothemes.com/snippets/change-number-of-products-displayed-per-page/

ronald ronald
26 feb. 2013 01:32:27
Toate răspunsurile la întrebare 3
0

Doar adaugă verificarea condițională în fișierul tău 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

Am întârziat la petrecere, dar dacă nu trebuie să iei în considerare PHP 5.2, este mai sigur și mai eficient să folosești o închidere (closure):

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

(Vezi manualul PHP despre create_function.)

3 mar. 2016 18:54:52
0

Tocmai am citit subiectul tău,

Am creat un plugin pentru asta care adaugă o listă derulantă prin care vizitatorul poate selecta numărul de produse pe care dorește să le vadă.

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

Sper că te poate ajuta în situația ta.

8 mar. 2014 12:49:39