Con add_query_arg()
esto es bueno agregar parámetros adicionales a una URL y también es fácil crear una regla de reescritura. Hasta aquí todo bien. Pero el problema es el reemplazo de URL realizado por WordPress.
Cuando tengo una URL, como:
www.mysite.com/?page_id=1&myvar=test
y escribo esta URL en la línea de dirección del navegador con enlaces permanentes activados. Este enlace se convertirá en:
www.example.com/pagename/?myvar=test
PERO : lo que me gustaría obtener es:
www.example.com/pagename/test
Finalmente, me gustaría usar código como:
<a href="<?php add_query_arg( 'myvar', 'test', get_permalink() ) ?>"> .... </a>
lo que resultaría en:
www.example.com/pagename/test
¿Cómo se puede lograr esto? He pasado horas leyendo documentos y no pude encontrar una solución.
permalinks
url-rewriting
urls
usuario3114592
fuente
fuente
Respuestas:
Simplemente enfrenté la misma situación y tropecé con esta pregunta mientras buscaba en Google.
Parece que esto no es posible. Core mismo solo agrega cadenas a la URL si los enlaces permanentes están habilitados, consulte https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/link-template.php#L571
Para cualquier persona interesada en esto: puede hacer algo como esto en su código:
Jon Cave también recomendó esta solución en un comentario en el blog oficial de creación: https://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/#comment-686
fuente
WordPress no te permitirá hacer esto fácilmente. De hecho, las reglas de reescritura son su única opción para lograr este tipo de cosas en WordPress y las reglas de reescritura de WordPress pueden volverse realmente desordenadas cuando su sitio crece porque los complementos y temas (y usted también) pueden agregar reglas de reescritura personalizadas por encima de las reglas existentes en su (multi )sitio de instalación.
La solución @swissspidy funcionará si ya tiene una regla de reescritura para su clave (myvar) y está utilizando enlaces permanentes en la primera condición y luego recurre a las cadenas de consulta tradicionales en ausencia de esas condiciones. La solución @Johnathan Joosten muestra cómo las reglas de reescritura pueden volverse muy muy complejas en WordPress (imagínelo haciendo eso para todas sus claves y valores de cadena de consulta ...)
Encontré este problema varias veces antes mientras trabajaba en algunos proyectos medianos para mis clientes y pude lograr algo similar usando un complemento llamado Obfusquer. Según el sitio web, enmascara todas las cadenas de consulta de WordPress con claves secretas definidas por el usuario y también proporciona ganchos para requisitos personalizados avanzados.
Es curioso, no figura en el repositorio de complementos de WordPress, y creo que necesitará una suscripción (que creo que es realmente asequible ya que 1 licencia única funcionará incluso en la instalación multisitio), pero aquí hay un enlace si necesita enmascarar / ocultar cadenas de consulta en instalaciones de WordPress. También tienen documentación aquí .
Ahora uso el complemento en casi todos mis proyectos de WordPress, espero que ayude a sus necesidades. Salud.
fuente
La solución de Wordpress sería agregar reglas de reescritura para hacer algo como esto:
Leer más: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule
fuente