Supongamos que tuviéramos que manejar alguno de estos casos típicos en que necesitamos recibir parámetros, como ser “rubro”, “localidad”, o “nombre”, por ejemplo, utilizando “pretty permalinks”.
Esto es lo que tuve que hacer para que WP tome http://localhost/test/nombre/daniel/ es decir, “daniel”, el valor para “nombre”.
En functions.php del theme activo:
/*
Adaptado del ejemplo "A Quick and dirty example for rewriting http://mysite/project/1 into http://mysite/index.php?pagename=project&id=1"
de http://codex.wordpress.org/Function_Reference/WP_Rewrite
Por HighToro - 2009-12-01.
Este codigo debe colocarse en el archivo functions.php del theme activo.
Si todo funciona correctamente, se debería crear un registro "_transient_rewrite_rules" en la tabla (el_sitio)_options que comience asi:
a:636:{s:11:"nombre/(.+)";s:44:"index.php?pagename=nombre&nombre=$matches[1]";s:12:"robots\.txt$"; ...
*/
add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');
// Remember to flush_rules() when adding rules
function flushRules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
// Adding a new rule
function wp_insertMyRewriteRules($rules) {
$newrules = array();
$newrules['nombre/(.+)'] = 'index.php?pagename=nombre&nombre=$matches[1]';
return $newrules + $rules;
}
// Adding the id var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars) {
array_push($vars, 'nombre');
return $vars;
}
Luego, en el archivo nombre.php del theme pondremos este template:
/*
Template Name: Buscador de nombre
Por HighToro - 2009-12-01.
*/
// Codigo para agregar al inicio del nombre.php (del theme activo), antes de la llamada get_header();
global $wp_query, $wp_rewrite;
$nombre_solicitado = '';
if ($wp_rewrite->using_permalinks()) { // WordPress using Pretty Permalink structure
$nombre_solicitado = $wp_query->query_vars['nombre'];
} else { // WordPress using default pwrmalink structure like www.site.com/wordpress/?p=123
$nombre_solicitado = (isset($_GET['nombre'])) ? htmlspecialchars($_GET['nombre']) : '';
}
// Y luego el header y todo el templateo de siempre de WP.
get_header();
// ... (Mucho codigo PHP y HTML mezclados)...
get_footer();
Al ser un template (o “plantilla“), debe ser llamado desde una página. En el caso de nuestro ejemplo, a esta página la llamaremos “nombre” y debería quedar así: http://localhost/test/nombre/ colgando del raíz.
Espero que a alguien le sirva, pues en la web no está ni “todo junto” ni muy claro. Acá lo tienen andando luego de que lo hiciera, rompiera y corrigiera. Lo probé en un entorno limpio y anduvo ok.




Hola… este es justamente lo que ando buscando pero no me ha funcionado, alguna idea? tu donde lo tienes implementado.
gracias
Las instrucciones son exactas, Maximiliano. Me extraña que no te funcione. Me rompí bastante la cabeza para lograrlo, al ejemplo de uso vivo lo tenés acá: http://www.jabad.org.ar/guia-de-nombres-en-hebreo/masculinos/
tené en cuenta que los nombres salen de una tabla independiente.
No puedo ofrecerte más ayuda ya que lo hice hace un año, no estoy más en tema.
Pero igual me da curiosidad… ¿qué es lo que no te anda?
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Graciasssssssssssssssssssssss!!!!!!!!!!!!!!!!
Me has salvado el proyecto. Va de lujo.
¡Iupiiii! Que emoción… esto sería la 1era. vez que Gattaca sirve para algo.