<?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>NogardTech &#187; wordpress</title>
	<atom:link href="http://www.nogardtech.com.ar/portalv2/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nogardtech.com.ar/portalv2</link>
	<description>Tecnologia, Información, Locura y más...</description>
	<lastBuildDate>Sun, 16 Jan 2011 14:50:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Llamar a otra base de datos en una plantilla (WordPress)</title>
		<link>http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/</link>
		<comments>http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 18:28:22 +0000</pubDate>
		<dc:creator>dragonnegro</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[$wpdb]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[plantilla]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.nogardtech.com.ar/portalv2/?p=900</guid>
		<description><![CDATA[Muchos de nosotros solemos utilizar WordPress como una base segura para un sistema de usuarios y administracion de un sitio web. Muchas veces me ha tocado programar por sobre el WP base y modificarlo a gusto de mis clientes, pero &#8230; <a href="http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Muchos de nosotros solemos utilizar <strong>WordPress </strong>como una base segura para un sistema de usuarios y administracion de un sitio web. Muchas veces me ha tocado programar por sobre el <strong>WP</strong> base y modificarlo a gusto de mis clientes, pero al utilizar instrucciones o llamadas SQL independientes me he llegado a encontrar que interrumpen la correcta ejecucion de las llamadas de <strong>WP</strong>.</p>
<p style="text-align: justify;">Es asi como investigando descubri que mientras se tuviera el mismo par usuario/clave que la base de datos de WP para acceder a la otra base de datos, era posible utilizar la notacion completa basededatos.tabla con el objeto global <strong>$wpdb</strong>.</p>
<p style="text-align: justify;">Aqui les dejo un ejemplo simple, que en este caso estaria dentro de una plantilla de WordPress.</p>
<pre class="brush: php; highlight: [14,15,16,19,20]; title: ; notranslate">
&lt;?php
/**
 * @package WordPress
 * @subpackage Mi Tema de Prueba
 */
/*
Template Name: Probando $wpdb
*/
?&gt;
&lt;table width='600'&gt;
&lt;?php get_header; ?&gt;
&lt;?php
global $wpdb; // declaramos la global
$resultados = $wpdb-&gt;get_results(&quot;SELECT * FROM otrabd.mitabla&quot;);
$cuantos = $wpdb-&gt;num_rows;
foreach ($resultados as $datos)
{
echo '&lt;tr&gt;';
echo '&lt;td&gt;$datos-&gt;nombre&lt;/td&gt;';
echo '&lt;td&gt;$datos-&gt;apellido&lt;/td&gt;';
echo'&lt;/tr&gt;';
}
?&gt;
&lt;/table&gt;
&lt;?php echo 'Se han encontrado: '.$cuantos.' resultados.';
&lt;?php get_footer; ?&gt;
</pre>
<p style="text-align: justify;">Aqui podemos ver que primero llamamos a la global <strong>$wpdb</strong>, luego utilizamos la propiedad <strong>get_results</strong> del objeto para obtener los resultados de nuestra consulta. En caso de que fuera necesario incluir variables externas  (POST o GET) en nuestra consulta, es recomendable utilizar la propiedad <strong>prepare </strong>del objeto <strong>$wpdb</strong>.<br />
De la siguiente forma:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
global $wpdb;
$query = $wpdb-&gt;prepare(&quot;SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'&quot;, $_GET[nombre], $_GET[apellido]);
$resultados = $wpdb-&gt;get_results($query);
?&gt;
</pre>
<p style="text-align: justify;">Aqui vemos como la propiedad <strong>prepare </strong>recibe dos argumentos, el primero es la consulta que deseamos realizar, con las variables identificadas como %s y %d, y luego un segundo y tercer parametro que son (en orden) las variables que luego seran reemplazadas en %s y %d respectivamente. Como metodo opcional se puede pasar como segundo argumento un <strong>array </strong>con las variables (en caso de que nuestra consulta tuviera muchas variables externas a filtrar con <strong>prepare</strong>).</p>
<p>De este modo:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb-&gt;prepare(&quot;SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'&quot;, $filtrar);
$resultados = $wpdb-&gt;get_results($query);
?&gt;
</pre>
<p style="text-align: justify;">Otras propiedades que les pueden ser de utilidad son <strong>$wpdb-&gt;query</strong> (para instrucciones de insertar, borrar,etc.) y <strong>$wpdb-&gt;num_rows</strong> (usada en el primer ejemplo, que devuelve la cantidad de filas afectadas en la ultima consulta).</p>
<p style="text-align: justify;">Cabe destacar que tanto <strong>$wpdb-&gt;query</strong> como <strong>$wpdb-&gt;get_results</strong> pueden devolver los resultados como un array asociativo, un array numerico o un objeto (por defecto), llamando su segundo parametro como <strong>ARRAY_A</strong> o <strong>ARRAY_N</strong> respectivamente.</p>
<p>Por ejemplo:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb-&gt;prepare(&quot;SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'&quot;, $filtrar);
$resultados = $wpdb-&gt;get_results($query, ARRAY_A);
echo $resultados[nombre];
echo $resultados[apellido];
?&gt;
</pre>
<p>Espero les haya servido este articulo, pueden encontrar más información aqui (En ingles):</p>
<p><a href="http://codex.wordpress.org/Function_Reference/wpdb_Class">Function Reference/wpdb Class</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP_query y paginación</title>
		<link>http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/</link>
		<comments>http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 20:42:51 +0000</pubDate>
		<dc:creator>dragonnegro</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp_query()]]></category>

		<guid isPermaLink="false">http://www.nogardtech.com.ar/portalv2/?p=775</guid>
		<description><![CDATA[Trabajando en un proyecto personal me encontre ante una situacion particular: necesitar mostrar solo una categoria en la pagina principal de WordPress. &#8220;Ok.&#8221; , me dije. &#8220;Solamente voy a usar wp_query() y tema solucionado, pero no fue tan facil, ya &#8230; <a href="http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Trabajando en un proyecto personal me encontre ante una situacion particular: necesitar mostrar solo una categoria en la pagina principal de <em>WordPress</em>. &#8220;<em><strong>Ok.</strong></em>&#8221; , me dije. &#8220;Solamente voy a usar <strong>wp_query()</strong> y tema solucionado, pero no fue tan facil, ya que por alguna razón usando <strong>wp_query()</strong> no funcionaba la paginación.</p>
<p style="text-align: justify;">La funcion de paginacion esta definida en el archivo <em>link-template</em> dentro de la carpeta <em>wp-includes</em>. La mayoria de los temas de <em>WordPress </em>tienen incluida una paginacion basada en las funciones <strong>previous_posts_link()</strong> y <strong>next_posts_link()</strong>, estas funciones utilizan una variable global llamada, misteriosamente <img src='http://www.nogardtech.com.ar/portalv2/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , <strong><em>wp_query</em></strong> que no es mas ni menos que una instancia de <strong>WP_query()</strong>. Y he aqui el problema: cuando llamamos a nuestra propia instancia de la funcion <strong>WP_query()</strong>, no contamos con esta variable global lo cual va a hacer que la paginacion de los posts de <em>WordPress </em>no funcione.</p>
<p style="text-align: justify;">Ejemplo: supongamos que queremos mostrar solo la categoria 3.</p>
<p style="text-align: justify;">
<pre class="brush: php; highlight: [4,5,7]; title: ; notranslate">
&amp;lt;h3&amp;gt;Articulos de la Categoria 3&amp;lt;/h3&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query-&amp;gt;query('cat=3'.'&amp;amp;paged='.$paged);
?&amp;gt;
</pre>
<p style="text-align: justify;">Como pueden ver en la linea 4, asignamos la variable global <strong>wp_query</strong> a una variable temporal llamada <em><strong>temp </strong>(para mantener una referencia)</em>. Luego, en la linea 5 podemos ver que asignamos el valor <strong>null </strong>(que no es lo mismo que un cero, que si es un valor), a la variable global <strong>wp_query</strong>. Instanciamos a <strong>WP_query()</strong> y luego hacemos un</p>
<pre class="brush: php; title: ; notranslate">

$wp_query-&amp;gt;query('cat=3'.'&amp;amp;paged='.$paged);
</pre>
<p style="text-align: justify;">Es de destacarse la parte de &#8220;<strong>&#8216;&amp;paged=&#8217;.$paged</strong>&#8221; , luego llamamos a las funciones <strong>previous_posts_link()</strong> y <strong>next_posts_link()</strong> como siempre para finalmente volver la variable <strong>wp_query</strong> a su estado original usando el valor <strong>$temp</strong> que habiamos asignado previamente.</p>
<pre class="brush: php; title: ; notranslate">
&amp;lt;?php $wp_query = null; $wp_query = $temp;?&amp;gt;
</pre>
<p style="text-align: left;">Aqui les dejo un codigo completo:</p>
<pre class="brush: php; highlight: [4,5,7,17]; title: ; notranslate">
&amp;lt;h3&amp;gt;Articulos de la Categoria 3&amp;lt;/h3&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query-&amp;gt;query('cat=3'.'&amp;amp;paged='.$paged);
?&amp;gt;
&amp;lt;?php while ($wp_query-&amp;gt;have_posts()) : $wp_query-&amp;gt;the_post(); ?&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&amp;lt;?php the_permalink() ?&amp;gt;&quot; rel=&quot;bookmark&quot;&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;?php endwhile; ?&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;div&amp;gt;
&amp;lt;div&amp;gt;&amp;lt;?php previous_posts_link('&amp;amp;laquo; Anterior') ?&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;&amp;lt;?php next_posts_link('Siguiente &amp;amp;raquo;') ?&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;?php $wp_query = null; $wp_query = $temp;?&amp;gt;
</pre>
<p style="text-align: justify;">Espero que este ejemplo les haya servido y hayan podido solucionar este problema que se presenta con la paginacion al usar la funcion <strong>WP_query()</strong> de forma personalizada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gravatar: &#8220;Uno para todos&#8221;</title>
		<link>http://www.nogardtech.com.ar/portalv2/2009/08/gravatar-uno-para-todos/</link>
		<comments>http://www.nogardtech.com.ar/portalv2/2009/08/gravatar-uno-para-todos/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 18:04:35 +0000</pubDate>
		<dc:creator>dragonnegro</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[avatar]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.nogardtech.com.ar/portalv2/?p=542</guid>
		<description><![CDATA[&#8220;Asi como existen los avatares (una pequeña imagen que nos identifica) en los foros, existen los gravatares para los blogs.&#8221; Si bien esta afirmacion no es totalmente cierta &#8211; ya que Gravatar es un servicio de avatares y no es &#8230; <a href="http://www.nogardtech.com.ar/portalv2/2009/08/gravatar-uno-para-todos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em>&#8220;Asi como existen los avatares (una pequeña imagen que nos identifica) en los foros, existen los gravatares para los blogs.&#8221;</em></p>
<p style="text-align: justify;">Si bien esta afirmacion no es totalmente cierta &#8211; ya que <strong>Gravatar</strong> es un servicio de avatares y no es algo diferente a un avatar &#8211; es sabido que <strong>Gravatar</strong> tiene su mayor publico en la blogosfera.</p>
<p style="text-align: justify;">Pero, ¿que tiene de especial este servicio?, se preguntaran.<br />
<strong>Gravatar</strong> significa ni mas ni menos que <strong>G</strong>lobally <strong>R</strong>ecognized <strong>A</strong>vatar, en otras palabras: &#8220;Avatar Globalmente Reconocido&#8221;.</p>
<p style="text-align: justify;">¿En que se basa este servicio?<br />
Pues bien, este servicio se basa en la idea original de Tom Werner y Rob Cameron, de &#8220;unir&#8221; un avatar a una cuenta de mail de nuestra eleccion, y al firmar en cualquier blog dejando nuestro mail &#8211; aun sin estar registrados &#8211; aparecera esa imagen sin necesidad de configurar nada extra. Interesante ¿no?. Un avatar para todos los blogs, relacionado a nuestra cuenta de mail que usamos para firmar en blogs.</p>
<p style="text-align: center;">
<p>Este servicio es sumamente facil de usar y pueden probarlo registrandose aqui:<br />
<a href="http://en.gravatar.com/site/signup" target="_blank">http://en.gravatar.com/site/signup</a></p>
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://www.nogardtech.com.ar/portalv2/wp-content/uploads/2009/08/gravatar_gd.jpg"><img title="Click para Ampliar" src="http://www.nogardtech.com.ar/portalv2/wp-content/uploads/2009/08/gravatar_tb.jpg" alt="image" /></a></p>
<p style="text-align: center;">
<p>Citando a MundoGeek.net</p>
<blockquote>
<p style="text-align: justify;">En resumen, el usuario crea una cuenta en gravatar.com seleccionando una imagen como gravatar y dado que los gravatares se toman de un único servidor, el de gravatar.com, sólo se tiene que registrar una vez, mostrándose su gravatar en todos los blogs que tengan activado este servicio.</p>
</blockquote>
<p style="text-align: justify;">
<p style="text-align: justify;">Para aquellos que suelan firmar en blogs, y no quieran registrarse en cada uno de ellos, pero aun asi les interese tener una imagen personalizada he aqui la solucion.</p>
<p style="text-align: justify;">Pueden probarla en <strong>NogardTech.com.ar</strong>, ya que este blog tiene Gravatar activado.</p>
<p style="text-align: justify;">Saludos y hasta la proxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nogardtech.com.ar/portalv2/2009/08/gravatar-uno-para-todos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

