Je veux que wp_link_pages (messages multiples) affiche les numéros de page, le mot "précédent" avant ces numéros et un "suivant" après ces numéros. Cela ressemblerait à ceci:
Précédent 1, 2, 3, 4 Suivant
J'essaie de faire ceci sans un plugin. Voici ce que j'ai essayé jusqu'à présent, mais ça ne marche pas, c'est seulement d'afficher des chiffres.
<?php wp_link_pages(array(
'before' => '<span style="clear:both; display:block">Pages',
'after' => '</span>',
'next_or_number'=>'number',
'previouspagelink' => 'previous',
'nextpagelink'=> 'Next'
)); ?>
La fonction que vous utilisez, wp_link_pages
Codex , ne possède pas la fonctionnalité que vous recherchez par défaut.
Cependant, vous pouvez facilement l'étendre en utilisant une fonction de rappel enregistrée en tant que filtre sur les arguments de cette fonction:
add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');
Le filtre modifiera ensuite les paramètres utilisés dans cette fonction à la volée et injectera les liens manquants dans les arguments prev
et next
qui sont affichés à gauche et à droite du numéroté. liste de liens (next_or_number' => 'number'
):
/**
* Add prev and next links to a numbered page link list
*/
function wp_link_pages_args_prevnext_add($args)
{
global $page, $numpages, $more, $pagenow;
if (!$args['next_or_number'] == 'next_and_number')
return $args; # exit early
$args['next_or_number'] = 'number'; # keep numbering for the main part
if (!$more)
return $args; # exit early
if($page-1) # there is a previous page
$args['before'] .= _wp_link_page($page-1)
. $args['link_before']. $args['previouspagelink'] . $args['link_after'] . '</a>'
;
if ($page<$numpages) # there is a next page
$args['after'] = _wp_link_page($page+1)
. $args['link_before'] . ' ' . $args['nextpagelink'] . $args['link_after'] . '</a>'
. $args['after']
;
return $args;
}
Usage:
wp_link_pages(array(
'before' => '<p>' . __('Pages:'),
'after' => '</p>',
'next_or_number' => 'next_and_number', # activate parameter overloading
'nextpagelink' => __('Next'),
'previouspagelink' => __('Previous'),
'pagelink' => '%',
'echo' => 1 )
);
Si votre thème always utilise les liens prev et next, vous pouvez alors modifier légèrement la fonction pour en faire le comportement par défaut à chaque fois que number
(la valeur par défaut) est utilisée. Vous devez donc écrire moins dans vos thèmes.
Ceci est une implémentation légèrement différente de suggérée par Velvet Blues .
La fonction wp_link_pages()
n'affiche que soit texte ou nombre, jamais les deux. Si vous regardez le code de la fonction, vous verrez qu'il n'y a pas d'option pour la faire se comporter différemment en passant des paramètres.
Cela étant dit, il y a trois façons de faire cela sans plugin:
wp_link_pages()
. bidouille très inefficace. J'ai écrit un article sur comment faire cela sur mon blog. Fondamentalement, j'utilise le wp_link_pages_args filter et ajoute une fonction dans le fichier functions.php qui ajoute une nouvelle option, "next_and_number".
WordPress Hack: Numéro d'affichage & liens suivant/précédent avec wp_link_pages ()
Essayez ceci, vous pouvez plus le personnaliser. Mais ça devrait faire ce que tu voulais :-)
function tp_link_pages() {
global $page, $numpages;
echo paginate_links( array(
'format' => get_permalink() . '%#%/',
'current' => $page,
'total' => $numpages
) );
}
Ce code est sur la boucle de messages? Le codage me convient. Voici l'exemple du Codex sur la façon d'utiliser:
<?php
wp_link_pages(array(
'before' => '<p>' . __('Pages:'),
'after' => '</p>',
'next_or_number' => 'number',
'nextpagelink' => __('Next page'),
'previouspagelink' => __('Previous page'),
'pagelink' => '%',
'echo' => 1 )
);
?>
Je ne comprends pas quel est le problème ... Avez-vous une erreur?
Cela devrait fonctionner:
<?php $args = array(
'before' => '<span style="clear:both; display:block">Pages',
'after' => '</span>',
'nextpagelink' => __('Next'),
'previouspagelink' => __('Previous')
);
wp_link_pages($args);
?>
Vous n'avez pas besoin d'ajouter next_or_number car number est déjà la valeur par défaut.
La réponse est différente, mais cela a été inspiré par @ 无 灯 qui a décidé de supprimer sa réponse. A mon avis, c'est la meilleure solution, la plus simple et la plus flexible:
La solution dépend de paginate_links()
. La seule chose à savoir est que base
sera l'URL du début, ajoutée par %_%
, qui sera ensuite remplacée par format
. Donc, tant que nous utilisons get_permalink().'%_%';
, nous savons que nous resterons dans tous les cas sur le poste en cours. Dans format
, le #
est remplacé par le numéro de page:
function wpse37256_paginate_paged()
{
if ( ! $paginate_links = paginate_links( array(
'type' => 'array'
,'total' => $GLOBALS['numpages']
,'mid_size' => 1
,'end_size' => 1
#,'prev_next' => false
,'prev_text' => '« '.__( 'Prev', 'your_textdomain' )
,'next_text' => __( 'Next', 'your_textdomain' ).' »'
,'base' => get_permalink().'%_%'
,'format' => user_trailingslashit( '%#%' )
,'current' => $GLOBALS['page']
) ) )
return;
echo "<div class='pagination-container'>{$paginate_links}</div>";
}