pagination – add_rewrite_rule: funciona bien pero está roto para la paginación

Pregunta:

Mi configuración es la siguiente:

  • Taxonomía llamada 'región'
  • Términos en esta taxonomía como 'escocia'
  • Varios tipos de publicaciones que usan esta taxonomía única

He logrado funcionar bastante enlaces permanentes del siguiente formato usando la regla de reescritura a continuación:

add_rewrite_rule(
    'region/([^/]+)/([^/]+)/([^/]+)/?',
    'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[3]',
    'top'
);

Esto me da una URL funcional como:
http://example.com/region/scotland/type/event/
que es exactamente lo que necesito (región / [escocia] = taxonomía, tipo / [evento] = tipo de publicación)

Sin embargo, intenté agregar un add_rewrite_rule adicional para lidiar con la paginación en el siguiente formato de URL (¡realmente no me llevo bien con las expresiones regulares!) Pero simplemente no puedo hacer que la paginación funcione correctamente, estaba apuntando a lograr lo siguiente:

http://example.com/region/scotland/type/event/page/1
http://example.com/region/scotland/type/event/page/2
http://example.com/region/scotland/type/event/page/3

Creo que estoy casi allí, ya que tengo una regla de reescritura que funciona correctamente, pero después de probar muchas cosas diferentes, simplemente no he podido lograr la combinación correcta de reglas de regex / reescritura para lograr la paginación. El enlace permanente no tan bonito para esta consulta, que funciona correctamente es:

http://example.com/index.php?taxonomy=region&term=scotland&post_type=event&paged=1

Respuesta:

Has probado:

El principal:

add_rewrite_rule( 'region/([^/]+)/type/([^/]+)/?', 'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[2]', 'top' );

Para la paginación

add_rewrite_rule( 'region/([^/]+)/type/([^/]+)/page/([0-9]{1,})/?', 'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[2]&paged=$matches[3]', 'top' );

Por curiosidad, reemplacé uno de los ([^/]+) con el 'tipo' literal ya que no parece ser una variable dinámica.

Si la paginación no funciona, intente cambiar el orden de cuándo se declara, es decir, antes o después de sus otras reglas de reescritura. Muchos problemas tienen que ver con el orden en que se declaran, qué efectos, qué regla se ejecuta primero.

Además, el complemento Inspector de reglas de reescritura puede ser muy útil para ayudarlo a determinar qué reglas de reescritura se están ejecutando para URL específicas.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım