web-dev-qa-db-fra.com

Problèmes de pagination utilisant le plugin WP_Paginate

J'ai donc lu plus de posts et d'articles sur ce sujet que je ne souhaite admettre et je ne peux toujours rien trouver d'œuvres. Voici la question - je ne peux pas faire avancer la pagination et elle montre tous les mêmes messages maintes et maintes fois - comme je l’ai vu dans d’autres articles.

Voici ce que j'utilise (2 modèles distincts pour différentes catégories):

<?php
$paged = get_query_var( 'page' );
query_posts('cat=4&paged='.$paged);
if(have_posts()) { while(have_posts()) { the_post(); 
?>

Cela fonctionne bien, mais je passe ensuite à la seule autre page du site - qui utilise le même code dans la boucle, une catégorie différente (3) et cela ne fonctionne pas, ce n’est pas une faute de frappe, etc.

J'ai aussi fatigué ce qui suit:

if(have_posts()){
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
 query_posts($query_string . "&cat=4");
  while(have_posts()){
  the_post();
  global $more;
  $more = 0;

OR

query_posts('cat=3&paged='.get_current_page());
  if(have_posts()){
  while(have_posts()){
  the_post();
  global $more;
  $more = 0;

Avec la fonction get_current_page, j'ai utilisé ce hack, qui m'avait été dit par WP VIP (mais cela fonctionnait pour les deux pages):

/* Get current page for paginaton navigation */ 
function current_page() {
 $pageURL = 'http';
 //check what if its secure or not
 if ($_SERVER["HTTPS"] == "on") {
 $pageURL .= "s";
 }
 //add the protocol
 $pageURL .= "://";
 //check what port we are on
 if ($_SERVER["SERVER_PORT"] != "80") {
 $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
 $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 //cut off everything on the URL except the last 3 characters
 $urlEnd = substr($pageURL, -3);
 //strip off the two forward shashes
 $page = str_replace("/", "", $urlEnd);
 //return just the number
 return $page;
 }
1
Chris

Votre solution ici est la plus correcte ..

    if(have_posts()){ $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts($query_string . "&cat=4"); 
while(have_posts()){ 
the_post(); global $more; $more = 0;

... mais a quelques erreurs. Essayer:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$category = get_category_by_slug('your-category-slug');
query_posts(array('paged' => $paged, 'cat' => $category->term_id)); 
while(have_posts()){ 
    the_post(); 
    global $more; 
    $more = 0;
    //output here
}

Notez que l'utilisation de l'identifiant de catégorie directement ne fonctionnera pas sur WP VIP. Les identifiants de catégorie ne correspondent pas à ce que vous avez localement.

1
prettyboymp