WP-PageNavi

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">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</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_pages
  • wp_pagenavi_class_first
  • wp_pagenavi_class_previouspostslink
  • wp_pagenavi_class_extend
  • wp_pagenavi_class_smaller
  • wp_pagenavi_class_page
  • wp_pagenavi_class_current
  • wp_pagenavi_class_larger
  • wp_pagenavi_class_nextpostslink
  • wp_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

  1. Instala e activa o plugin.
  2. No teu tema, substitúe as chamadas a next_posts_link() e previous_posts_link() por wp_pagenavi(). En «Uso», máis abaixo, móstrase como queda nun tema estándar.
  3. Vai a WP-Admin -> Axustes -> PageNavi para 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()

Funciona PageNavi con instancias secundarias de WP_Query?

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 filtro wp_pagenavi_allowed_html, se precisas ampliala ou reducila.

Comentarios

17 de Agosto de 2023
Simples e totalmente funcional. Resolvendo o problema de paginação com extrema facilidade. Parabéns aos devs.
22 de Novembro de 2022
I am using this plugin + Divi. It works just fine, but there is a bug with the slugs of the pages and the post types. If you have, for example, a post type with the slug "speakers" and your page is also call "speakers", both slugs will be the same and this is causing the plugin to break. Most people on the internet are looking for this error as the page/2 error. Be sure the slugs does not match and it will work just fine.
17 de Agosto de 2022
A simple and excellent plugin. The display of the blog list becomes much smarter, so it is very useful. Currently, I've been using in combination with "Styles For WP Pagenavi Addon".
Ler todas as 149 opinións

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_options en vez de en pagenavi_options. A fila antiga cópiase e elimínase automaticamente
  • BREAKING: A pantalla de axustes pasou de options-general.php?page=pagenavi a options-general.php?page=wp-pagenavi
  • BREAKING: pagenavi-css.css agora é css/wp-pagenavi.css, e unha copia no directorio do teu tema debe renomearse a wp-pagenavi.css para seguir substituíndoo
  • BREAKING: Agora todas as clases levan prefixo. PageNavi_Options, PageNavi_Call e PageNavi_Core pasan a ser WP_PageNavi_Options, WP_PageNavi_Call e WP_PageNavi_Core, e PageNavi_Admin agora é WP_PageNavi_Settings
  • BREAKING: PageNavi_Core::$options eliminouse. Usa WP_PageNavi_Options::defaults() e WP_PageNavi_Options::get() no seu lugar. Consulta a FAQ
  • BREAKING: PageNavi_Options_Page eliminouse e substituíuse por WP_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 a html(), 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() ou scb_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_capability sobre a capacidade que require a pantalla de axustes
  • NEW: Unha fila wp_pagenavi_version que 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 de wp_kses_post() máis os elementos SVG integrados, exposta como o filtro wp_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 de esc_attr()
  • FIXED: Os números de páxina derivados dunha WP_User_Query convé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 filtro wp_pagenavi, wp_pagenavi() e wp_pagenavi_dropdown() manteñen os nomes que tiñan