J'ai besoin de la pagination pour avoir l'URL, comme:
current_url?p-page=1
current_url?p-page=2
current_url?p-page=3
Et ainsi .. La raison pour laquelle j'ai besoin de cela est parce que j'ai d'autres paramètres dans la page.
le problème est que dans la documentation, il spécifie:
format
(chaîne) (facultatif) Utilisé pour la structure de pagination. La valeur par défaut est '? Page =% #%'. Si vous utilisez de jolis permaliens, ce serait '/ page /% #%', où '% #%' est remplacé par le numéro de page. Par défaut: '? Page =% #%'
Et j'ai une URL amicale activée,
Comment puis-je empêcher la valeur par défaut (BTW ignore mon p-page
, toujours en utilisant page
)
current_url/page/1
current_url/page/2
current_url/page/3
c'est mon code, maintenant:
echo paginate_links( array(
'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
'total' => $query->max_num_pages,
'current' => max( 1, get_query_var( 'p-page' ) ),
'format' => '?p-page=%#%',
'show_all' => false,
'type' => 'plain',
'end_size' => 2,
'mid_size' => 1,
'prev_next' => true,
'prev_text' => sprintf( '<i></i> %1$s', '<i class="icon-chevron-left"></i>' ),
'next_text' => sprintf( '%1$s <i></i>', '<i class="icon-chevron-right"></i>' ),
'add_args' => false,
'add_fragment' => '',
) );
Comme solution temporaire, je le fais comme ceci:
if ($current_page > 1) {
echo '<a href="?p-page='.($current_page-1).'" class="page-numbers prev"><i class="icon-chevron-left"></i></a>';
}
for ($i = 1; $i <= $query->max_num_pages; $i++) {
echo '<a href="?p-page='.$i.'" class="page-numbers '.($current_page == $i ? 'current' : '').'">'.$i.'</a>';
}
if ($current_page < $query->max_num_pages) {
echo '<a href="?p-page='.($current_page+1).'" class="page-numbers prev"><i class="icon-chevron-right"></i></a>';
}
Mais serait-il bien de tirer parti de la fonctionnalité des points et donc .. une idée?
Cette partie:
'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
génère une pièce page
comme celle-ci:
'base' => http://example.tld/page/%#%/
Si nous jetons un coup d'oeil dans paginate_links()
nous voyons le défaut:
'base' => $pagenum_link, // http://example.com/all_posts.php%_% :
// %_% is replaced by format (below)
'format' => $format, // ?page=%#% : %#% is replaced by the page number
où le commentaire en ligne indique que %_%
est remplacé par le format.
La documentation dit aussi:
Un exemple d'argument
‘base’
est"http://example.com/all_posts.php%_%"
et le‘%_%’
est requis. Le‘%_%’
sera remplacé par le contenu de l'argument‘format’
.‘format’
est un exemple de l’argument"?page=%#%"
. ‘% #%’ Est également requis. Le‘%#%’
sera remplacé par le numéro de page.
Si on utilise ça:
'base' => '%_%'
alors, il deviendra le même que l'argument format
.
Voici une modification de l'exemple d'OP:
echo paginate_links(
[
'base' => '%_%',
'total' => $query->max_num_pages,
'current' => $current,
'format' => '?p-page=%#%',
'show_all' => false,
'type' => 'plain',
'end_size' => 2,
'mid_size' => 1,
'prev_next' => true,
'prev_text' => '<i></i> <i class="icon-chevron-left"></i>',
'next_text' => '<i class="icon-chevron-right"></i> <i></i>',
'add_args' => false,
'add_fragment' => '',
]
);
où nous utilisons:
$current = max( 1, (int) filter_input( INPUT_GET, 'p-page' ) );
cela ira aussi dans l'argument WP_Query
de $query
:
'paged' => $current,
Exemple de sortie pour ?p-page=6
:
<a class="prev page-numbers" href="?p-page=5"><i></i> <i class="icon-chevron-left"></i></a>
<a class='page-numbers' href=''>1</a>
<a class='page-numbers' href='?p-page=2'>2</a>
<span class="page-numbers dots">…</span>
<a class='page-numbers' href='?p-page=5'>5</a>
<span class='page-numbers current'>6</span>
<a class='page-numbers' href='?p-page=7'>7</a>
<span class="page-numbers dots">…</span>
<a class='page-numbers' href='?p-page=99'>99</a>
<a class='page-numbers' href='?p-page=100'>100</a>
<a class="next page-numbers" href="?p-page=7"><i class="icon-chevron-right"></i> <i></i></a>
ps: Il n'est pas nécessaire que sprintf
associe deux chaînes statiques, comme nous le voyons dans l'OP pour prev_text
et next_text
. Actuellement, cette partie semble fausse dans l'extrait de code d'origine, je l'ai donc supprimée.
J'espère que ça aide!