Afișează toate produsele pe o singură pagină cu WooCommerce
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.
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;' ) );
}

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
.)

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.
