Error 404 en paginación con enlaces permanentes

En ocasiones si se utilizan enlaces permanentes personalizados del tipo /%category%/%postname%/ existe la posibilidad que al tratar de acceder a la paginación de WordPress, a por ej:  https://misitioweb.com/page/2/ y siguientes, se reciba un error 404.

Posibles soluciones :

1.- Cambiar el tipo de enlaces permanentes :

Desde el escritorio de WordPress, Opción Ajustes > Enlaces permanentes, cambiar la estructura personalizada actual a «Nombre de la entrada»

2.- Borrado del fichero .htacces

En ocasiones, puede que no se realice correctamente la escritura de enlaces permanentes desde el servidor. Para comprobarlo nada más fácil que borrar el archivo .htaccess actual (estará en la carpeta raíz donde está instalado WordPress).

A continuación ve al escritorio de WordPress, a Ajustes > Enlaces permanentes,  y guarda cambios sin tocar ningún ajuste.

3.- Mediante una función personalizada

function my_post_queries( $query ) {
        if (!is_admin() && $query->is_main_query()){
        // alter the query for the home and category pages
        if(is_category()){
            $query->set('posts_per_page', 1);
            $query->set('post_type','product');
        }
    }
}
add_action( 'pre_get_posts', 'my_post_queries' );
function custom_pagination($numpages = '', $pagerange = '', $paged='') {
  if (empty($pagerange)) {
    $pagerange = 2;
  }
  /**
   * This first part of our function is a fallback
   * for custom pagination inside a regular loop that
   * uses the global $paged and global $wp_query variables.
   *
   * It's good because we can now override default pagination
   * in our theme, and use this function in default queries
   * and custom queries.
   */
  global $paged;
  if (empty($paged)) {
    $paged = 1;
  }
  if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
  }
  $pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('<'),
    'next_text'       => __('>'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
  );

  $paginate_links = paginate_links($pagination_args);

  if ($paginate_links) {
    echo "<nav class='custom-pagination'>";
      echo $paginate_links;
    echo "</nav>";
  }

}
php

Añadir al final del archivo  functions.php del tema.

 

*Haz /ten siempre una copia de tu base de datos a mano antes de proceder con tareas críticas