web-dev-qa-db-fra.com

Problème de pagination de la page d'accueil avec la fonction paginate_links ()

J'utilise l'extrait suivant pour la pagination en sortie:

// get the current page     
if ( get_query_var('paged') ) {
    $current_page = get_query_var('paged');
} else if ( get_query_var('page') ) {
    $current_page = get_query_var('page');
} else {
    $current_page = 1;
}

// structure of “format” depends on whether we’re using pretty permalinks
$permalink_structure = get_option('permalink_structure');
$format = empty( $permalink_structure ) ? '&page=%#%' : 'page/%#%/';

echo paginate_links(array(
      'base' => get_pagenum_link(1) . '%_%',
      'format' => $format,
      'current' => $current_page,
      'total' => $total,
      'mid_size' => 4,
      'type' => 'list'
));

Lorsque je règle le type de lien permanent sur http://wordpress/?p=123 et que j'utilise une page statique pour une page de garde avec pagination, je reçois des URL incorrectes, telles que:

http://wordpress/&page=2

au lieu de:

http://wordpress/?page=2

Si vous accédez à http://wordpress/?page=2, les liens dans la pagination seront également incorrects, car l'URL actuelle avec les requêtes est utilisée comme base, par exemple:

http://wordpress/?page=2&page=3

Si j'utilise un autre type de lien permanent avec la réécriture, tout fonctionne correctement.

Je cherche une solution pour cet extrait de code et la pagination de la page d'accueil.

Merci d'avance pour votre aide.

UPDATE: Mon problème principal était un type de message erroné à &page=%#% mais en fait, j'ai besoin de &paged=%#% et j'ajoute une condition avec la fonction is_front_page () pour passer de & à ? pour la requête frontpage .

2
KOt

Je pense c'est parce que le code fait strictement ce que vous dites de faire, ici:

$format = empty( $permalink_structure ) ? '&page=%#%' : 'page/%#%/';

Remarque: '&page=%#%'.

Essayez de construire votre structure de lien permanent en utilisant add_query_arg() , qui gère l’ajout correct de & et ?.

1
Chip Bennett