Pagina de arhivă...limitarea articolelor per pagină
Am creat un tip de postare personalizat 'testimonials' și am setat opțiunea "has archive" pe "true" și am un fișier template PHP numit "archive-testimonials.php".
Ceea ce vreau să fac este să limitez numărul de postări afișate la doar 5 cu opțiuni înainte și înapoi pentru a naviga între următoarele 5 postări. Pare destul de simplu, dar din anumite motive nu reușesc să-l fac să funcționeze.
Aici este bucla mea care îmi arată toate cele 17 postări testimoniale:
<?php $loop = new WP_Query( array( 'pagename' => 'testimonials', 'posts_per_page' => -1 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
<?php endwhile; ?>
Singura modalitate prin care va afișa toate postările în loc de doar 10 este cu 'posts_per_page' => -1. Și chiar și fără acel "posts_per_page" va afișa doar 10 din cele 17 postări.
Acum am încercat:
<?php $loop = new WP_Query( array( 'post_type' => 'testimonials', 'posts_per_page' => 5 ) ); ?>
<?php previous_posts_link(); ?> • <?php next_posts_link(); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
<?php endwhile; ?>
Pot să afișez doar cinci, dar nu am paginare pentru următoarele 5. Doar deschide "testimonials/page/2/" și arată aceleași cinci ca și pagina anterioară.
Ce fac greșit? Orice ajutor este foarte apreciat.
Mulțumesc

Nu creați o nouă interogare și buclă doar pentru a modifica numărul de postări pe pagină. Adăugați o funcție conectată la pre_get_posts
și modificați orice parametri doriți acolo înainte ca interogarea să fie executată. Acest cod ar trebui plasat în fișierul functions.php
al temei dumneavoastră sau într-un plugin.
function wpd_testimonials_query( $query ){
if( ! is_admin()
&& $query->is_post_type_archive( 'testimonials' )
&& $query->is_main_query() ){
$query->set( 'posts_per_page', 5 );
}
}
add_action( 'pre_get_posts', 'wpd_testimonials_query' );
Apoi, în șablon, rulați bucla normală și paginarea va funcționa așa cum este de așteptat.
