Cómo agregar paginación en WordPress para reemplazar la navegación de Prev/Siguiente

Blog de Wordpress en computadora

Si decides comenzar un blog en WordPress, la configuración predeterminada para las páginas de archivo de paginación de WordPress es Prev/Siguiente. Esa configuración es suficiente para la mayoría de las personas que probablemente no le darían una segunda pensada. Pero si eres del tipo exigente que le gusta ajustar cada pequeño detalle, puedes querer que tus páginas muestren números de página en su lugar.

Si este es el caso, tienes dos opciones. Puedes ajustar el código o puedes optar por la salida fácil y usar un plugin.

Tabla de Contenidos

  • Agregar paginación a un blog de WordPress sin un plugin
  • ¿Puedo dividir una sola publicación o página de WordPress en múltiples páginas?
  • Usa un plugin de WordPress para reemplazar Prev/Siguiente con números

Agregar paginación a un blog de WordPress sin un plugin

Si la idea de usar otro plugin no es muy atractiva (después de todo, ralentizan tu sitio), entonces puedes decidir que ajustar el código es el mejor camino a seguir. En realidad, no es tan difícil si sabes dónde buscar. Si no lo sabes, te lo mostraremos.

Primero, necesitas un programa FTP. Este es simplemente un programa que se conecta a tu sitio web y muestra los archivos del sitio. El más popular es FileZilla, pero puedes usar cualquiera que desees. Personalmente, uso CyberDuck. Ambos son gratuitos, pero CyberDuck tiene un molesto popup para donar al desarrollador.

Inicia sesión en tu sitio usando tu programa FTP y verás los archivos.

Inicio de sesión en el sitio web de Cyberduck Ftp

Ahora busca un archivo llamado functions.php. Se encuentra en la carpeta de tu tema que generalmente está ubicada en /wp-content/themes/NOMBRE DEL TEMA. Abre el archivo functions.php con un editor de texto y añade lo siguiente al final del archivo. Recuerda guardar los cambios en el archivo después.

function numeric_posts_nav(){  
  
if( is_singular())  
return;  
  
global$wp_query;  
  
/** Detener la ejecución si hay sólo 1 página */  
if($wp_query->max_num_pages<=1)  
return;  
  
$paged= get_query_var('paged') ? absint( get_query_var('paged')):1;  
$max=intval($wp_query->max_num_pages);  
  
/** Agregar la página actual al array */  
if($paged>=1)  
$links[]=$paged;  
  
/** Agregar las páginas alrededor de la página actual al array */  
if($paged>=3){  
$links[]=$paged-1;  
$links[]=$paged-2;  
}  
  
if(($paged+2)<=$max){  
$links[]=$paged+2;  
$links[]=$paged+1;  
}  
  
echo'  
'."\n";  
  
/** Enlace de la publicación anterior */  
if( get_previous_posts_link())  
printf('  
%s  
'."\n", get_previous_posts_link());  
  
/** Enlace a la primera página, más puntos suspensivos si es necesario */  
if(!in_array(1,$links)){  
$class=1==$paged ? ' class="active"':'';  
  
printf('%s'."\n",$class, esc_url( get_pagenum_link(1)),'1');  
  
if(!in_array(2,$links))  
echo'  
…  
';  
}  
  
/** Enlace a la página actual, más 2 páginas en cualquier dirección si es necesario */  
sort($links);  
foreach((array)$linksas$link){  
$class=$paged==$link ? ' class="active"':'';  
printf('%s'."\n",$class, esc_url( get_pagenum_link($link)),$link);  
}  
  
/** Enlace a la última página, más puntos suspensivos si es necesario */  
if(!in_array($max,$links)){  
if(!in_array($max-1,$links))  
echo'  
…  
'."\n";  
  
$class=$paged==$max ? ' class="active"':'';  
printf('%s'."\n",$class, esc_url( get_pagenum_link($max)),$max);  
}  
  
/** Enlace de la siguiente publicación */  
if( get_next_posts_link())  
printf('  
%s  
'."\n", get_next_posts_link());  
  
echo'  
'."\n";  
  
}

A continuación, abre el archivo donde se muestra la paginación. Este suele ser el archivo index.php y archive.php. Pega el siguiente código para mostrar la paginación.