<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GATTACA &#187; WordPress personalización</title>
	<atom:link href="http://gattaca.com.ar/tag/wordpress-personalizacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://gattaca.com.ar</link>
	<description>«Mi vida es un eterno casi.» (ylek)</description>
	<lastBuildDate>Wed, 18 Jan 2012 22:17:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Como hacer que WordPress tome parámetros personalizados en la URL</title>
		<link>http://gattaca.com.ar/2009/12/como-hacer-que-wordpress-tome-parametros-personalizados-en-la-url/</link>
		<comments>http://gattaca.com.ar/2009/12/como-hacer-que-wordpress-tome-parametros-personalizados-en-la-url/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 01:57:41 +0000</pubDate>
		<dc:creator>C. Jaacks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[WordPress personalización]]></category>

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

