Paginarea nu funcționează în șablonul personalizat de pagină
Posibilă duplicare:
Paginarea nu funcționează cu bucla personalizată
Se pare că aceasta este o problemă foarte populară. Există deja o grămadă de persoane care oferă soluții pentru aceasta. Dar cumva, după ore de căutare, încă nu am găsit soluția. Sper că cineva îmi poate oferi un indiciu aici.
În prezent, am creat o pagină pentru afișarea tuturor postărilor din tipurile mele personalizate de postări. Iată codurile șablonului meu de pagină:
<?php
/*
Șablon Nume: pagină tip post personalizat
*/
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type'=>array('car','bicycle'),
'posts_per_page'=> 20,
'page'=>$paged,
);
$the_query = new WP_Query( $args);
$num = $the_query->found_posts;
if($the_query){
if ($the_query->have_posts()) : echo $num;
while ($the_query->have_posts()) : $the_query->the_post();
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
endwhile;
next_posts_link( 'Următorul', $the_query->max_num_pages );
previous_posts_link('Anterior', $the_query->max_num_pages );
else : $return_string = 'niciun rezultat';
endif; wp_reset_query(); wp_reset_postdata();
}
?>
</div><!-- #content -->
</div><!-- #primary -->
Problema aici este că atunci când dau click pe Următorul
(sau Anterior
), rezultatul interogării rămâne același. Am observat că URL-ul afișează numărul paginii (page/2/
, sau page/3/
..etc). Și found_posts() rămâne același pe fiecare pagină
, totul pare în regulă, doar că conținutul nu afișează obiectul corect al interogării.
Am încercat și să adaug 'max_num_pages'=>2
la argumentele wp_query, dar încă nu ajută.
Cineva are idei?
Încearcă următoarele și vezi cum merge..
<?php
global $paged;
global $wp_query;
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('posts_per_page=10&post_type=your_post_type'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<!-- aici faci afișarea în buclă, titlu, conținut etc -->
<?php endwhile; ?>
<?php previous_posts_link('« Mai noi') ?>
<?php next_posts_link('Mai vechi »') ?>
<?php
$wp_query = null;
$wp_query = $temp;
?>

@tc.k Mică modificare, adăugând două globale. Încearcă din nou și vezi cum merge de data aceasta.

fără noroc. Problema este că interogarea căutată rămâne același rezultat pe fiecare pagină.

Ok, în sfârșit am găsit problema. A fost o greșeală stupidă, se pare că trebuia să folosesc paged
nu page
în argument.

Din codex http://codex.wordpress.org/Using_Permalinks
Uneori, navigarea către a doua (și următoarele) pagini de articole nu funcționează așa cum te-ai aștepta. Pagina ta poate genera un link către o pagină cu una dintre aceste URI-uri:
http://www.example.com/page/2/ http://www.example.name/category/categoryname/page/2/ http://www.example/year/month/day/page/2/ http://www.example/year/month/page/2/
Rezultatul accesării unuia dintre aceste linkuri este că pagina se încarcă cu toate elementele înconjurătoare (antet, subsol, bară laterală), dar în loc de o pagină cu articole, apare un mesaj de eroare: "Ne pare rău, nu există articole care să corespundă criteriilor."
Aceasta se întâmplă din cauza unei erori în fișierul .htaccess generat de WordPress. Pentru a remedia problema, șterge conținutul fișierului .htaccess și creează-l din nou.
