Mi URL predeterminada para la página del blog es sampledomain.name/blog.
Luego usaré esta URL para el resultado de la búsqueda dominio.nombre/blog/búsqueda
Ya creé una regla de reescritura y su página de resultados de búsqueda está funcionando. El problema es que cada vez que cambio la página me redirige a la página 404. A continuación se muestran mis funciones y paginación.
/* Change search page slug. */
function wpb_change_search_url() {
global $wp_query;
$post_type = get_query_var('post_type');
if ( is_search() && ! empty( $_GET['s'] ) && $post_type == 'post' ) {
wp_redirect( home_url( "/blog/search/" ) . urlencode( get_query_var( 's' ) ) . '/?post_type=post' );
exit();
}
}
add_action( 'template_redirect', 'wpb_change_search_url' );
/* enable /search/ path for post */
function custom_rewrite_rule() {
add_rewrite_rule('^blog/search/(?!.*page)([0-9-a-z-_]+)/?$','index.php?post_type=post&s=$matches[1]&paged=$matches[2]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0 );
/* Pagination */
$big = 999999999; // need an unlikely integer
$paginate = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'prev_text' => __('prev'),
'next_text' => __('next')
) );
Resultado de búsqueda de la primera página en funcionamiento: sampledomain.com/blog/search/search_keyword/?post_type=post La URL de paginación no funciona/404: sampledomain.com/blog/search/search_keyword/page/2/?post_type=post
.