Paginarea nu funcționează în șablonul personalizat de pagină

23 oct. 2012, 21:27:40
Vizualizări: 14.4K
Voturi: 2

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?

1
Comentarii

Te rog să cauți înainte de a posta întrebări. Aceasta a fost adresată și răspunsă de multe, multe ori.

Chip Bennett Chip Bennett
24 oct. 2012 00:27:01
Toate răspunsurile la întrebare 2
5

Î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('&laquo; Mai noi') ?>
    <?php next_posts_link('Mai vechi &raquo;') ?>

<?php 
  $wp_query = null; 
  $wp_query = $temp; 
?>
24 oct. 2012 00:00:13
Comentarii

Am încercat, dar nu funcționează la fel de bine.

dev-jim dev-jim
24 oct. 2012 17:41:29

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

Adam Adam
24 oct. 2012 17:43:56

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

dev-jim dev-jim
24 oct. 2012 17:50:45

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.

dev-jim dev-jim
24 oct. 2012 18:26:37

@tc.k Corect. Nici eu nu am observat lipsa literei d în argumentul tău, dar da, ca regulă generală folosești 'paged='.$paged. Mă bucur că acum totul funcționează pentru tine. Toate cele bune.

Adam Adam
24 oct. 2012 18:37:50
2

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.

23 oct. 2012 21:33:55
Comentarii

Am citit asta acum doar 2 zile ;)

Mridul Aggarwal Mridul Aggarwal
23 oct. 2012 21:36:58

@Mridul Aggarwal, am încercat metoda ta, dar încă nu funcționează.

dev-jim dev-jim
23 oct. 2012 21:47:24