Descrición
Queres substituír as ligazóns antigas Entradas anteriores | Entradas seguintes por ligazóns de páxina?
Este plugin ofrece a etiqueta de modelo wp_pagenavi(), que xera ligazóns de paxinación vistosas.
Gran parte da liña 2.x foi obra de scribu, cuxos artigos sobre o seu uso con consultas secundarias son os que sinala a FAQ de abaixo. A icona do plugin é de SimpleIcon en Flaticon.
Doazóns
Dediquei a maior parte do meu tempo libre a crear, actualizar, manter e dar soporte a estes plugins. Se che gustan de verdade e podes axudarme cun par de euros, agradecereino moito. Se non, sénteste libre de usalos sen ningunha obriga.
Uso
No teu tema, tes que atopar as chamadas a next_posts_link() e previous_posts_link() e substituílas.
No tema Twentyten, queda así:
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyten' ) ); ?></div>
Substituirías esas dúas liñas por isto:
<?php wp_pagenavi(); ?>
Para as páxinas de varias partes, buscarías código coma este:
<?php wp_link_pages( ... ); ?>
e substitúeo por isto:
<?php wp_pagenavi( array( 'type' => 'multipart' ) ); ?>
Vai a WP-Admin -> Axustes -> PageNavi para a configuración.
Cambiar o CSS
Se precisas configurar o estilo CSS de WP-PageNavi, podes copiar o arquivo css/wp-pagenavi.css do directorio do plugin ao directorio do teu tema como wp-pagenavi.css e facer alí as túas modificacións. Así non perderás os cambios cando actualices o plugin.
A folla de estilos non define tipo de letra nin cor do texto, así que herda ambos do teu tema, e as súas dúas cores de bordo son propiedades personalizadas de CSS. Un cambio pequeno non precisa copiar o arquivo:
.wp-pagenavi {
--wp-pagenavi-border-color: #d0d0d0;
--wp-pagenavi-border-color-current: rebeccapurple;
}
Como alternativa, podes establecer «Usar wp-pagenavi.css» en Non na páxina de axustes e engadir os estilos directamente ao arquivo style.css do teu tema.
Cambiar os nomes de clase
Hai filtros que permiten cambiar os nomes de clase por defecto asignados aos elementos da navegación por páxinas.
Filtros
wp_pagenavi_class_pageswp_pagenavi_class_firstwp_pagenavi_class_previouspostslinkwp_pagenavi_class_extendwp_pagenavi_class_smallerwp_pagenavi_class_pagewp_pagenavi_class_currentwp_pagenavi_class_largerwp_pagenavi_class_nextpostslinkwp_pagenavi_class_last
Uso dos filtros
// Simple Usage - 1 callback per filter
add_filter('wp_pagenavi_class_previouspostslink', 'theme_pagination_previouspostslink_class');
add_filter('wp_pagenavi_class_nextpostslink', 'theme_pagination_nextpostslink_class');
add_filter('wp_pagenavi_class_page', 'theme_pagination_page_class');
function theme_pagination_previouspostslink_class($class_name) {
return 'pagination__control-link pagination__control-link--previous';
}
function theme_pagination_nextpostslink_class($class_name) {
return 'pagination__control-link pagination__control-link--next';
}
function theme_pagination_page_class($class_name) {
return 'pagination__current-page';
}
// More Concise Usage - 1 callback for all filters
add_filter('wp_pagenavi_class_previouspostslink', 'theme_pagination_class');
add_filter('wp_pagenavi_class_nextpostslink', 'theme_pagination_class');
add_filter('wp_pagenavi_class_page', 'theme_pagination_class');
function theme_pagination_class($class_name) {
switch($class_name) {
case 'previouspostslink':
$class_name = 'pagination__control-link pagination__control-link--previous';
break;
case 'nextpostslink':
$class_name = 'pagination__control-link pagination__control-link--next';
break;
case 'page':
$class_name = 'pagination__current'
break;
}
return $class_name;
}
Capturas


Instalación
- Instala e activa o plugin.
- No teu tema, substitúe as chamadas a
next_posts_link()eprevious_posts_link()porwp_pagenavi(). En «Uso», máis abaixo, móstrase como queda nun tema estándar. - Vai a
WP-Admin -> Axustes -> PageNavipara cambiar o texto e o número de ligazóns de páxina.
Preguntas frecuentes
-
Cando vou á páxina 2, vexo as mesmas entradas que na páxina 1!
-
Estás a usar mal
query_posts(). Consulta The Right Way To use query_posts() -
Si; le este titorial
-
Como ignoro a páxina de opcións?
-
Se usas un plugin multilingüe, probablemente queirás ignorar as cadeas da páxina de opcións.
Podes facelo así:
<?php wp_pagenavi( array( 'options' => WP_PageNavi_Options::defaults() ) ); ?>Antes da 3.0.0 escribíase como
PageNavi_Core::$options->get_defaults(). Esa propiedade dependía do framework SCB incluído, que a 3.0.0 elimina, polo que a forma antiga xa non funciona e hai que actualizala. -
Podo usar unha frecha SVG para as ligazóns de anterior e seguinte?
-
Si. Os axustes do texto de navegación aceptan os elementos SVG integrados así como todo o que permite
wp_kses_post(), polo que unha icona escrita na pantalla de axustes sobrevive ao gardar. Esa lista de permitidos é o filtrowp_pagenavi_allowed_html, se precisas ampliala ou reducila.
Comentarios
Colaboradores e desenvolvedores
“WP-PageNavi” é un software de código aberto. As seguintes persoas colaboraron con este plugin.
Colaboradores“WP-PageNavi” foi traducido a 53 idiomas. Grazas aos desenvolvedores polas súas contribucións.
Traduce “WP-PageNavi” ao teu idioma.
Interesado no desenvolvemento?
Revisa o código, bota unha ollada aorepositorio SVN, ou subscríbete ao log de desenvolvemento por RSS.
Rexistro de cambios
3.0.1
- CHANGED: A migración dos axustes execútase agora cedo en cada solicitude, en vez de só cando se carga wp-admin, así que un sitio cuxo escritorio nunca se abre tamén recolle os seus axustes despois dunha actualización
- FIXED: Ao activar o plugin na rede, só se actualizaba o sitio no que se facía clic. Todos os demais sitios da rede seguían mostrando o seu front end cos axustes por defecto; os seus axustes reais anteriores á 3.0.0 quedaban sen ler ata que alguén abría o wp-admin dese sitio, polo que non se perdeu nada e calquera sitio que se vise mal xa se recuperou por si mesmo. Agora a activación percorre todos os sitios da rede
3.0.0
- BREAKING: WP-PageNavi agora require WordPress 6.8 e PHP 8.2. Non se ofrecerá a actualización a un sitio que use versións anteriores
- BREAKING: Os axustes gárdanse en
wp_pagenavi_optionsen vez de enpagenavi_options. A fila antiga cópiase e elimínase automaticamente - BREAKING: A pantalla de axustes pasou de
options-general.php?page=pagenaviaoptions-general.php?page=wp-pagenavi - BREAKING:
pagenavi-css.cssagora écss/wp-pagenavi.css, e unha copia no directorio do teu tema debe renomearse awp-pagenavi.csspara seguir substituíndoo - BREAKING: Agora todas as clases levan prefixo.
PageNavi_Options,PageNavi_CallePageNavi_Corepasan a serWP_PageNavi_Options,WP_PageNavi_CalleWP_PageNavi_Core, ePageNavi_Adminagora éWP_PageNavi_Settings - BREAKING:
PageNavi_Core::$optionseliminouse. UsaWP_PageNavi_Options::defaults()eWP_PageNavi_Options::get()no seu lugar. Consulta a FAQ - BREAKING:
PageNavi_Options_Pageeliminouse e substituíuse porWP_PageNavi_Settings - BREAKING: Ao eliminar o SCB Framework tamén se eliminan as funcións globais e as clases
scb*que definía, xa que o plugin que o incluía as cargaba en WordPress. Se o teu tema ou outro plugin chamaba ahtml(),html_link(),set_post_field(),scb_init(),scb_register_table(),scb_install_table(),scb_uninstall_table(),scb_admin_notice(),scb_get_query_flags(),scb_list_fold()ouscb_list_group_by(), agora ten que proporcionalas por si mesmo. Ten en conta que outro plugin instalado aínda pode estar a proporcionalas, así que o fallo só aparecerá cando nada máis no sitio inclúa SCB - NEW: Elimináuse o WP SCB Framework incluído. Agora o plugin funciona só coas API do núcleo de WordPress e non ten dependencias
- NEW: A páxina de axustes créase coa API de axustes de WordPress
- NEW: Reestruturado en
includes/seguindo a disposición do Plugin Handbook - NEW: Un filtro
wp_pagenavi_capabilitysobre a capacidade que require a pantalla de axustes - NEW: Unha fila
wp_pagenavi_versionque garda os marcadores de versión do plugin e do esquema, para que unha actualización futura teña algo con que comparar - CHANGED: As dúas cores da folla de estilos son propiedades personalizadas de CSS con valores alternativos en vez de hexadecimais fixos, e agora inclúe un esquema de cor escuro
- CHANGED: A folla de estilos non usa propiedades CSS físicas, así que un só arquivo serve tanto para sitios de esquerda a dereita coma de dereita a esquerda
- FIXED: Unha frecha SVG integrada xa non elimina toda a ligazón de anterior/seguinte.
wp_kses_post()elimina un SVG en vez de limpalo, o que deixaba baleiro o texto da ligazón, e unha ligazón sen texto descártase por completo. Agora o texto de navegación fíltrase coa lista dewp_kses_post()máis os elementos SVG integrados, exposta como o filtrowp_pagenavi_allowed_html. Informado por Cal en toolshed (#73) - FIXED: A desinstalación en multisitio xa non se detén no sitio cen, así que unha rede grande ten as súas opcións eliminadas en todas partes. Informado por Cal en toolshed (#73)
- FIXED: As aria-labels da navegación agora coinciden coas cadeas que define o núcleo de WordPress, polo que se traducen en todos os idiomas que o núcleo admite. Informado por Cal en toolshed (#73)
- FIXED: Un array enviado onde corresponde un axuste de texto xa non provoca un aviso de PHP 8, e as claves de opción que o plugin non define xa non se almacenan. Informado por Cal en toolshed (#73)
- FIXED: As ligazóns de páxina escápanse con
esc_url()en vez deesc_attr() - FIXED: Os números de páxina derivados dunha
WP_User_Queryconvértense a enteiros, así que a páxina actual se marca correctamente - FIXED: A versión da folla de estilos agora segue a versión do plugin en vez de estar fixada en 2.70
- FIXED: A etiqueta de cada axuste Si/Non apuntaba a un elemento que non existía, así que facer clic nela non facía nada
- NOTE: Non se renomea ningún gancho nin etiqueta de modelo. Os dez filtros
wp_pagenavi_class_*, o filtrowp_pagenavi,wp_pagenavi()ewp_pagenavi_dropdown()manteñen os nomes que tiñan
