¿Es posible tener URLs dinámicas en WordPress?
Sé que el título puede parecer un poco confuso, pero lo que busco es algo posible en Symfony o RoR. Tengo una página con esta URL: http://mydomain.com/job/
. Ahora quiero esta estructura de URL http://mydomain.com/job/php-developer/45
, http://mydomain.com/job/java-developer/46
. Los parámetros después de /job/
son dinámicos, y no son ninguna página o post, pertenecen a una página job
¿Es esto posible en WordPress?
PREGUNTA ACTUALIZADA:
Según la respuesta de @Gioia actualicé mi código.
A continuación mi código:
add_filter('query_vars', 'add_query_vars');
function add_query_vars($aVars) {
$aVars[] = "job_title"; // Añade job_title como variable de consulta
$aVars[] = "job_id"; // Añade job_id como variable de consulta
return $aVars;
}
add_action( 'init', 'add_rules' );
function add_rules() {
add_rewrite_rule('^/job/([^/]*)/([^/]*)/?','index.php?page_id=13338&job_title=$matches[1]&job_id=$matches[2]','top');
}
Ahora esto me devuelve error 404 cuando intento esta URL http://mydomain.com/job/php-dev/45
. Pero cuando pruebo esta URL http://mydomain.com/index.php?page_id=13338&job_title=php-dev&job_id=45
funciona correctamente.

No estoy completamente seguro de entender a qué te refieres con que los parámetros caen bajo un trabajo de página, pero si quieres decir que diferentes contenidos se cargan en la misma página usando javascript / ajax, podrías usar https://github.com/browserstate/history.js/ para generar la URL correspondiente para cada estado. Es difícil decir más sobre cómo podrías implementar esto sin saber más sobre lo que estás intentando hacer.
ACTUALIZACIÓN
Creo que deberías usar reglas de reescritura personalizadas. Eso es lo que WordPress usa para crear las URLs bonitas, y tiene una API para agregar las tuyas propias.
Primero necesitas agregar las etiquetas que necesitas rastrear, en tu caso title y job_id. En realidad probablemente deberías cambiar title por algo como job_title, no estoy completamente seguro de que title causaría un problema, pero como es algo en WordPress, es mejor prevenir.
Usé el siguiente código, necesitas agregarlo a tu function.php, en tu tema.
add_filter('query_vars', 'add_query_vars');
function add_query_vars($aVars) {
$aVars[] = "job_title";
$aVars[] = "job_id";
return $aVars;
}
Más información: http://codex.wordpress.org/Rewrite_API/add_rewrite_tag
Luego agregas la regla de reescritura, también en functions.php:
add_action( 'init', 'add_rules' );
function add_rules() {
add_rewrite_rule('^job/([^/]*)/([^/]*)/?','index.php?page_id=12&job_title=$matches[1]&job_id=$matches[2]','top');
}
Deberías reemplazar el page_id por el id de la página de trabajo. Más información: http://codex.wordpress.org/Rewrite_API/add_rewrite_rule.
Una vez que hayas guardado el archivo, necesitas ir a ajustes -> enlaces permanentes y simplemente guardar sin cambiar nada. Eso asegurará que tus ajustes se carguen correctamente.
Puedes instalar el plugin rewrite inspector para ver todas las reglas de reescritura aplicadas y comprobar que las tuyas están presentes. https://wordpress.org/plugins/rewrite-rules-inspector/
Puedes instalar el plugin debug bar para inspeccionar la página y ver qué regla de reescritura se está aplicando a la página: https://wordpress.org/plugins/debug-bar/
Y aquí tienes más información sobre reglas de reescritura en general: http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
ACTUALIZACIÓN 2
Para recuperar los parámetros:
if (isset($wp_query->query_vars['job_title'])) {
$job_title = urldecode($wp_query->query_vars['job_title']);?>
<?php }

Mi objetivo es lograr esta URL http://mydomain.com/job/?title=php-developer&job_id=45
, pero para que esta URL sea más amigable para SEO, quiero algo como esto http://mydomain.com/job/php-developer/45

Hola, gracias por tu respuesta. Probé tu código, pero muestra una página 404, por favor revisa mi edición anterior en la pregunta.

Hola, acabo de probar el código y funcionó para mí. Primero, verifica que hayas cambiado el id de la página que venía en el código (?page_id=12) por el id de tu página de trabajos (puedes ver el id de la página cuando estás editándola, es parte de la URL: post.php?post=6&action=edit, 6 es el id de la página). También asegúrate de que después de cada cambio vayas a la página de configuración de enlaces permanentes y guardes los cambios.

Cambié el ID de la página por el mío, si accedo a esta URL index.php?page_id=13338&job_title=$matches[1]&job_id=$matches[2]
funciona, pero con la URL personalizada no. ¿Necesito agregar add_rewrite_tag
? ¿o alguna modificación en el htaccess?

Solo para asegurarnos, ¿fuiste a la configuración de enlaces permanentes y guardaste los cambios?

Sí, guardé los enlaces permanentes, mi estructura de enlaces permanentes es de esta manera /%postname%/

Continuemos esta discusión en el chat.
