Pregunta:
Tengo una taxonomía personalizada llamada location
y quiero agregar secciones como 'noticias' y 'mercado' para cada término, por lo que mi URL se parece a /location/montreal/news/
Funciona perfectamente hasta que intento agregar paginación. Aquí está mi código:
add_action( 'init', 'region_rewrite' );
function region_rewrite()
{
global $wp;
$wp->add_query_var( 'section' );
add_rewrite_rule(
'^location/([^/]*)/([^/]*)/page/([0-9]+)/?',
'index.php?location=$matches[1]§ion=$matches[2]&paged=$matches[3]',
'top'
);
add_rewrite_rule(
'^location/([^/]*)/([^/]*)/?',
'index.php?location=$matches[1]§ion=$matches[2]',
'top'
);
}
Estoy usando el complemento del analizador de reescritura y parece que la ubicación de query_vars, la sección y el paginado están asignados con el valor correcto. Sin embargo, obtengo un error 404 cuando intento acceder a la URL de una página como /location/montreal/news/page/2
. También noté que la variable de la page
tiene el valor /2
. ¿Es posible que esta sea la razón por la que obtengo un 404 no encontrado?
¡Cualquier ayuda será muy apreciada!
Respuesta:
Creo que podría simplemente llamar al add_rewrite_url
paginado en último lugar para que se verifique primero. De lo contrario, la versión paginada nunca obtendrá ninguna coincidencia, ya que la no paginada siempre coincidirá primero. También debería funcionar si elimina 'top' de sus argumentos.
Además, consulte esta página para ver una buena forma de depurar esos 404 cuando se trabaja con reescritura personalizada: http://www.dev4press.com/2012/tutorials/wordpress/practical/debug-wordpress-rewrite-rules-matching/