<?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>voragine.net &#187; WordPress</title>
	<atom:link href="http://voragine.net/archivo/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://voragine.net</link>
	<description>Autonomía digital y tecnológica.</description>
	<lastBuildDate>Tue, 31 Jan 2012 21:19:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3-RC3-19589</generator>
		<item>
		<title>Cómo hacer un loop en WordPress con los post de los últimos días, meses o años</title>
		<link>http://voragine.net/wordpress/como-hacer-un-loop-en-wordpress-con-los-post-de-los-ultimos-dias-meses-o-anos</link>
		<comments>http://voragine.net/wordpress/como-hacer-un-loop-en-wordpress-con-los-post-de-los-ultimos-dias-meses-o-anos#comments</comments>
		<pubDate>Fri, 30 Dec 2011 11:17:55 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[add_filter]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[wp_query]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=861</guid>
		<description><![CDATA[Que no es lo mismo que hacer un loop con los post de la última semana, del último mes o del último año. Para <strong><a title="Class Reference/WP Query -- WordPress Codex" href="http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters">conseguir un loop con las entradas de los últimos días, meses o años</a></strong> tenemos que crear una función que añada un filtro temporal a la query.]]></description>
			<content:encoded><![CDATA[<p>Que no es lo mismo que hacer un loop con los post de la última semana, del último mes o del último año. Para <strong><a title="Class Reference/WP Query -- WordPress Codex" href="http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters">conseguir un loop con las entradas de los últimos días, meses o años</a></strong> tenemos que crear una función que añada un filtro temporal a la query. Por ejemplo, para obtener los post de los últimos doce meses:</p>
<pre class="brush: php; title: ; notranslate">
function filter_where( $where = '' ) {
  $where .= &quot; AND post_date &gt; '&quot; . date('Y-m-d', strtotime('-365 days')) . &quot;'&quot;;
  return $where;
}
</pre>
<p>A continuación filtramos la query. La variable <code>$query_string</code> contiene la query sin modificar, el loop correspondiente a la página que se esté cargando.</p>
<pre class="brush: php; title: ; notranslate">
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
  while ($query-&gt;have_posts()) : $query-&gt;the_post();
    include &quot;loop.php&quot;;
  endwhile;
remove_filter( 'posts_where', 'filter_where' );
</pre>
<p>Si se quiere aplicar el filtro a una query específica, basta sustituir <code>$query_string</code> por parámetros de <code><a title="Class Reference/WP Query -- WordPress Codex" href="http://codex.wordpress.org/Class_Reference/WP_Query">WP_query</a></code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/como-hacer-un-loop-en-wordpress-con-los-post-de-los-ultimos-dias-meses-o-anos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dos formas para saber si una página tiene subpáginas en WordPress</title>
		<link>http://voragine.net/wordpress/dos-formas-para-saber-si-una-pagina-tiene-subpaginas-en-wordpress</link>
		<comments>http://voragine.net/wordpress/dos-formas-para-saber-si-una-pagina-tiene-subpaginas-en-wordpress#comments</comments>
		<pubDate>Wed, 16 Nov 2011 07:35:51 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[get_pages]]></category>
		<category><![CDATA[has_children]]></category>
		<category><![CDATA[page]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=822</guid>
		<description><![CDATA[Sencilla <strong><a title="WordPress has_children() function -- Forrst" href="http://forrst.com/posts/WordPress_has_children_function-DmS">función para saber si una página tiene subpáginas</a></strong>. Si se invoca sin parámetro evaluará la página actual; si se provee un identificador de página como parámetro, evaluará esa página. A mí no me acaba de convencer ni funcionar, pero ahí queda. Prefiero <a title="How to Check if a WordPress Page Has Children/subpages -- jeangalea.com" href="http://www.jeangalea.com/posts/wordpress/check-wordpress-page-childrensubpages/">el viejo método del count</a>.]]></description>
			<content:encoded><![CDATA[<p>Sencilla <strong><a title="WordPress has_children() function -- Forrst" href="http://forrst.com/posts/WordPress_has_children_function-DmS">función para saber si una página tiene subpáginas</a></strong>. Si se invoca sin parámetro evaluará la página actual; si se provee un identificador de página como parámetro, evaluará esa página.</p>
<pre class="brush: php; title: ; notranslate">
function has_children($child_of = null) {
	if(is_null($child_of)) {
		global $post;
		$child_of = ($post-&gt;post_parent != '0') ? $post-&gt;post_parent : $post-&gt;ID;
	}
	return (wp_list_pages(&quot;child_of=$child_of&amp;echo=0&quot;)) ? true : false;
}
</pre>
<p>Basta incluir la función en el archivo <code>functions.php</code>.</p>
<p>Si no se quiere depender de functions.php o se necesita la consulta puntualmente, siempre se puede recurrir al <a title="How to Check if a WordPress Page Has Children/subpages -- jeangalea.com" href="http://www.jeangalea.com/posts/wordpress/check-wordpress-page-childrensubpages/">viejo método del count</a>:</p>
<pre class="brush: php; title: ; notranslate">
$children = get_pages('child_of='.$post-&gt;ID);?&gt;
if( count( $children ) != 0 ) { // Has Children }
else { // No children }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/dos-formas-para-saber-si-una-pagina-tiene-subpaginas-en-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo meter el contenido de una entrada de WordPress en una variable sin perder los saltos de línea</title>
		<link>http://voragine.net/wordpress/como-meter-el-contenido-de-una-entrada-de-wordpress-en-una-variable-sin-perder-los-saltos-de-linea</link>
		<comments>http://voragine.net/wordpress/como-meter-el-contenido-de-una-entrada-de-wordpress-en-una-variable-sin-perder-los-saltos-de-linea#comments</comments>
		<pubDate>Tue, 15 Nov 2011 09:36:20 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[apply_filters]]></category>
		<category><![CDATA[get_the_content]]></category>
		<category><![CDATA[the_content]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=818</guid>
		<description><![CDATA[Uno de mis eternas batallas con WordPress, perdida hasta ahora, recientemente ganada: para almacenar información de las entradas de tu página (el título, la fecha, la URL...) en variables para usarlas más adelante, WordPress provee de unas funciones magníficas que devuelven la información sin hacer <code>echo</code>. El problema viene con la función de este tipo para el contenido, <code><a title="Function Reference/get the content -- WordPress Codex" href="http://codex.wordpress.org/Function_Reference/get_the_content">get_the_content</a></code>, que permite almacenar el contenido de una entrada en una variable.]]></description>
			<content:encoded><![CDATA[<p>Uno de mis eternas batallas con WordPress, perdida hasta ahora, recientemente ganada: para almacenar información de las entradas de tu página (el título, la fecha, la URL&#8230;) en variables para usarlas más adelante, WordPress provee de unas funciones magníficas que devuelven la información sin hacer <code>echo</code>. El problema viene con la función de este tipo para el contenido, <code><a title="Function Reference/get the content -- WordPress Codex" href="http://codex.wordpress.org/Function_Reference/get_the_content">get_the_content</a></code>, que permite almacenar el contenido de una entrada en una variable:</p>
<pre class="brush: php; title: ; notranslate">$post_text = get_the_content();</pre>
<p>pero le quita los saltos de línea, destruyendo los párrafos.</p>
<p>Para que esto no ocurra hay que aplicarle el filtro que WordPress aplica a la función <code>the_content</code> pero no a <code>get_the_content</code>.</p>
<pre class="brush: php; title: ; notranslate">
$post_text = get_the_content();
$post_text = apply_filters( 'the_content', $post_text );
</pre>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/como-meter-el-contenido-de-una-entrada-de-wordpress-en-una-variable-sin-perder-los-saltos-de-linea/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo traducir un tema de WordPress</title>
		<link>http://voragine.net/wordpress/como-traducir-un-tema-de-wordpress</link>
		<comments>http://voragine.net/wordpress/como-traducir-un-tema-de-wordpress#comments</comments>
		<pubDate>Mon, 07 Nov 2011 08:51:27 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[load_theme_textdomain]]></category>
		<category><![CDATA[poedit]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=813</guid>
		<description><![CDATA[Para conseguir un <strong>tema de WordPress traducible</strong> tenemos que etiquetar adecuadamente las cadenas a traducir en el código, crear un archivo con todas estas cadenas y sus equivalentes en el idioma deseado, y configurar nuestro tema con las funciones adecuadas para que utilize los archivos de traducción.]]></description>
			<content:encoded><![CDATA[<p>Para conseguir un <strong>tema de WordPress traducible</strong> tenemos que etiquetar adecuadamente las cadenas a traducir en el código, crear un archivo con todas estas cadenas y sus equivalentes en el idioma deseado, y configurar nuestro tema con las funciones adecuadas para que utilize los archivos de traducción.</p>
<h3>Etiquetando las cadenas a traducir en el código</h3>
<p>Para ello utilizamos la notación <code>__('cadena a traducir','nombre_tema')</code> y <code>_e('cadena a traducir','nombre_tema')</code>. La primera sencillamente nota que es una cadena a traducir, la segunda además hace <code>echo</code> de la cadena. En ambos casos el primer parámetro es la cadena; el segundo indica cual es el contexto de la traducción, normalmente se utiliza el nombre del tema. La cadena a traducir puede contener etiquetas HTML y para evitar errores de codificación, es mejor usar <a title="Códigos HTML - Caracteres y símbolos" href="http://www.ascii.cl/es/codigos-html.htm">códigos HTML para los caracteres especiales</a>, como las tildes. Por ejemplo:</p>
<pre class="brush: php; title: ; notranslate">
_e('&lt;strong&gt;Error 404&lt;/strong&gt;. La página que buscas no se encuentra', 'mi_tema');
the_content(__('Leer más...', 'mi_tema'));
</pre>
<h3>Creando un archivo con las cadenas de traducción</h3>
<p>El <a title="GNU `gettext' utilities" href="http://www.gnu.org/software/gettext/manual/gettext.html">paquete gettext</a> y el sistema de archivos <code>.po</code> y <code>.mo</code> permite <strong><a title="Creating POT Files -- WordPress Codex" href="http://codex.wordpress.org/User:Skippy/Creating_POT_Files">crear archivos con todas las cadenas a traducir automáticamente</a></strong>. La mejor opción es instalarse el programa <a title="PoEdtit -- Sourceforge" href="http://sourceforge.net/projects/poedit/">PoEdit</a>, una interfaz para gettext que facilita mucho el proceso. El archivo <code>.po</code> contendrá todas las cadenas y sus traducciones; cuando salvemos el archivo se generará automáticamente otro archivo con la compilación del archivo <code>.po</code>. Este otro archivo <code>.mo</code> es el que usará la web para traducir.</p>
<p>Conviene tener en cuenta las reglas de nomenclatura de estos archivos, ya que nombrarlo inadecuadamente puede hacer que WordPress no tenga en cuenta las traducciones. El nombre debe estar formado por el <strong><a title="Language Codes -- gettext manual" href="http://www.gnu.org/software/gettext/manual/html_chapter/gettext_16.html#Language-Codes">código del idioma</a></strong> y el <strong><a title="Country Codes -- gettext manual" href="http://www.gnu.org/software/gettext/manual/html_chapter/gettext_16.html#Country-Codes">código del país</a></strong>. Por ejemplo, <code>de_DE.mo</code> para el alemán.</p>
<h3>Configuración del tema para que sea traducible</h3>
<p>Para indicar a WordPress que nuestro tema es traducible tenemos que incluir una función en el archivo <code>functions.php</code>, crear la subcarpeta <code>languages/</code> dentro de la del tema, y alojar allí el archivo <code>.mo</code>. También conviene alojar el archivo <code>.po</code> aunque no es necesario para que la traducción funcione.</p>
<p>La función se encargará de cargar las cadenas de traducción del archivo correcto, mediante <code><a title="Function Reference/load theme textdomain -- WordPress Codex" href="http://codex.wordpress.org/Function_Reference/load_theme_textdomain">load_theme_textdomain()</a></code>.</p>
<pre class="brush: php; title: ; notranslate">
add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
    load_theme_textdomain('mi_tema', get_template_directory() . '/languages');
}
</pre>
<p>Después creamos la carpeta <code>languages/</code> y subimos a ella el archivo con las traducciones.</p>
<h3>Más información</h3>
<ul>
<li><a title="How to localize WordPress themes and plugins with GetText -- IcanLocalize" href="http://blog-en.icanlocalize.com/installing-wordpress-for-multiple-language-blogs/how-to-localize-wordpress-themes-and-plugins-with-gettext/">How to localize WordPress themes and plugins with GetText</a></li>
<li><a title="Installing WordPress in Your Language -- WordPress Codex" href="http://codex.wordpress.org/Installing_WordPress_in_Your_Language"> Installing WordPress in Your Language</a></li>
<li><a title="Translate a WordPress Theme in 3 Easy Steps -- SoloStream" href="http://www.solostream.com/blog/tutorials/translate-wordpress-theme/"> Translate a WordPress Theme in 3 Easy Steps</a></li>
<li><a title="How to Translate a WordPress Theme -- App Themes" href="http://www.appthemes.com/blog/how-to-translate-a-wordpress-theme/"> How to Translate a WordPress Theme</a></li>
<li><a title="How to make a translatable WordPress theme -- Cats who code" href="http://www.catswhocode.com/blog/how-to-make-a-translatable-wordpress-theme"> How to make a translatable WordPress theme</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/como-traducir-un-tema-de-wordpress/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Howto sobre $wpdb: cómo consultar, insertar o modificar la base de datos a voluntad en WordPress</title>
		<link>http://voragine.net/wordpress/howto-sobre-wpdb-como-consultar-insertar-o-modificar-la-base-de-datos-a-voluntad-en-wordpress</link>
		<comments>http://voragine.net/wordpress/howto-sobre-wpdb-como-consultar-insertar-o-modificar-la-base-de-datos-a-voluntad-en-wordpress#comments</comments>
		<pubDate>Tue, 25 Oct 2011 11:17:36 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[Breves]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[wpdb]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=783</guid>
		<description><![CDATA[<strong><a title="Advanced WordPress Queries -- wp.tutsplus.com" href="http://wp.tutsplus.com/tutorials/advanced-wordpress-queries-part-1/">Advanced WordPress Queries</a></strong>, en wp.tutsplus.]]></description>
			<content:encoded><![CDATA[<p><strong><a title="Advanced WordPress Queries -- wp.tutsplus.com" href="http://wp.tutsplus.com/tutorials/advanced-wordpress-queries-part-1/">Advanced WordPress Queries</a></strong>, en wp.tutsplus.</p>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/howto-sobre-wpdb-como-consultar-insertar-o-modificar-la-base-de-datos-a-voluntad-en-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo crear un archivo cronológico de una categoría en WordPress</title>
		<link>http://voragine.net/wordpress/como-crear-un-archivo-cronologico-de-una-categoria-en-wordpress</link>
		<comments>http://voragine.net/wordpress/como-crear-un-archivo-cronologico-de-una-categoria-en-wordpress#comments</comments>
		<pubDate>Mon, 24 Oct 2011 15:07:22 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wp_get_archives]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=780</guid>
		<description><![CDATA[Existe una función en WordPress, <a title="Function Reference/wp get archives -- WordPress Codex" href="http://codex.wordpress.org/Template_Tags/wp_get_archives">wp_get_archives();</a> que al ser invocada crea un archivo cronológico de los contenidos de la página; el formato es un listado de enlaces a los diferentes años, meses o días, en función de los parámetros que proporcionemos a la función. Lo que no existe es una función que limite este listado de enlaces cronológicos a una categoría. Con el siguiente código podemos <strong>obtener un archivo cronológico de una categoría, con acceso anual y mensual a los contenidos</strong>.]]></description>
			<content:encoded><![CDATA[<p>Existe una función en WordPress, <a title="Function Reference/wp get archives -- WordPress Codex" href="http://codex.wordpress.org/Template_Tags/wp_get_archives">wp_get_archives()</a>, que al ser invocada crea un archivo cronológico de los contenidos de la página; el formato es un listado de enlaces a los diferentes años, meses o días, en función de los parámetros que proporcionemos a la función. Lo que no existe es una función que limite este listado de enlaces cronológicos a una categoría. Con el siguiente código podemos <strong>obtener un archivo cronológico de una categoría, con acceso anual y mensual a los contenidos</strong>.</p>
<p>Hay que tener en cuenta que el siguiente ejemplo está pensado para funcionar en la página de archivo de una categoría, así que se obtiene la información necesaria de la categoría (ID, nombre&#8230;) mediante de la query actual mediante <a title="Function Reference/get query var -- WordPress Codex" href="http://codex.wordpress.org/Function_Reference/get_query_var">get_query_var()</a>.</p>
<pre class="brush: php; title: ; notranslate">
// definimos variables generales
$monthsName = array( &quot;0&quot;,&quot;Enero&quot;,&quot;Febrero&quot;,&quot;Marzo&quot;,&quot;Abril&quot;,&quot;Mayo&quot;,&quot;Junio&quot;,&quot;Julio&quot;,&quot;Agosto&quot;,&quot;Septiembre&quot;,&quot;Octubre&quot;,&quot;Noviembre&quot;,&quot;Diciembre&quot;);
$months = array(12,11,10,9,8,7,6,5,4,3,2,1);

// definimos variables de la categoría
// en este ejemplo la categoría actual
$cat = get_query_var('cat'); // ID
$cat_slug = get_query_var('category_name'); // slug
$cat_name = get_cat_name($cat); // nombre

// averiguamos cuándo se publicó el primer contenido de la categoría
// para saber dónde comenzar el listado
$args = array(
 'numberposts' =&gt; -1,
 'category' =&gt; $cat,
 'orderby' =&gt; 'post_date',
 'order' =&gt; 'DESC'
);
$current_cat_posts = get_posts( $args );
$count = 1;
while ( $count == '1' ) {
 foreach ( $current_cat_posts as $post ) {
   setup_postdata($post);
   $cat_first_year = get_the_date('Y');
   $cat_first_month = get_the_date('n');
 }
 $count++;
}
wp_reset_query();

// encabezado del listado
$cabeza_out = &quot;
 &lt;header&gt;
  &lt;h1&gt;$cat_name&lt;/h1&gt;
 &lt;/header&gt;
 &lt;nav&gt;
  &lt;ul&gt;
&quot;;
echo $cabeza_out;

   // variables para conocer la fecha actual
   // y por lo tanto uno de los dos límites del listado
   $currentY = date('Y');
   $currentM = date('n');
   $year = $currentY;

   // iniciamos loop que se ejecutará mientras el año actual sea
   // mayor o igual que el año en el que se publicó
   // el primer contenido de la categoría
   while ( $year &gt;= $cat_first_year ) :
     // primer caso: si el año de esta vuelta del loop es
     // mayor que el de la categoría
     if ( $year &gt; $cat_first_year ) :
       // código para enlace anual
       $year_out = &quot;
         &lt;li&gt;&lt;a href='/$cat_slug/$year' title='Archivo de $cat_name para el $year'&gt;$year&lt;/a&gt;&lt;/li&gt;
          &lt;ul&gt;&lt;!-- inicio sublista meses --&gt;
       &quot;;
       echo $year_out;
       // iniciamos loop para el listado mensual
       foreach ( $months as $month ) :
         if ( $month &lt;= $currentM ) :
            $month_out = &quot;
              &lt;li&gt;&lt;a href='/$cat_slug/$year/$month' title='Archivo de $cat_name para el mes $month de $year'&gt;$monthsName[$month]&lt;/a&gt;&lt;/li&gt;
            &quot;;
            echo $month_out;
         endif;
       endforeach;
       // pasamos al siguiente año
       $year--;         

     // segundo caso: si el año del loop es el mismo que el de la categoría
     elseif ( $year == $cat_first_year ) :
       $year_out = &quot;
         &lt;li&gt;&lt;a href='/$cat_slug/$year' title='Archivo de $cat_name para el $year'&gt;$year&lt;/a&gt;&lt;/li&gt;
       &quot;;
       echo $year_out;
       // iniciamos loop para el listado mensual
       foreach ( $months as $month ) :
         if ( $month &gt;= $cat_first_month ) {
            $month_out = &quot;
              &lt;li&gt;&lt;a href='/$cat_slug/$year/$month' title='Archivo de $cat_name para el mes $month de $year'&gt;$monthsName[$month]&lt;/a&gt;&lt;/li&gt;
            &quot;;
            echo $month_out;
         }
       endforeach;
       $year--;
     endif;
   endwhile;

// cerramos el listado
$epi_out = &quot;
  &lt;/ul&gt;
 &lt;/nav&gt;
&quot;;
echo $epi_out;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/como-crear-un-archivo-cronologico-de-una-categoria-en-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo evitar trackbacks propios en WordPress sin tocar el código ni tirar de plugin</title>
		<link>http://voragine.net/wordpress/como-evitar-trackbacks-propios-en-wordpress-sin-tocar-el-codigo-ni-tirar-de-plugin</link>
		<comments>http://voragine.net/wordpress/como-evitar-trackbacks-propios-en-wordpress-sin-tocar-el-codigo-ni-tirar-de-plugin#comments</comments>
		<pubDate>Thu, 20 Oct 2011 09:50:15 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[Breves]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[pingbacks]]></category>
		<category><![CDATA[trackbacks]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=778</guid>
		<description><![CDATA[Como complemento al código que publicamos ayer para evitar que aparezcan los trackbacks propios o internos en una entrada de WordPress, <em>Informático de Guardia</em> sugiere otra que no requiere tocar código ni instalar plugin alguno: <strong><a title="Evitar pingbacks a nuestro propio blog en WordPress -- Infomático de Guardia" href="http://andalinux.wordpress.com/2009/01/26/evitar-pingbacks-a-nuestro-propio-blog-en-wordpress/">enlazar mediante rutas relativas</a></strong>, así de fácil.]]></description>
			<content:encoded><![CDATA[<p>Como complemento al código que publicamos ayer para evitar que aparezcan los trackbacks propios o internos en una entrada de WordPress, <em>Informático de Guardia</em> sugiere otra que no requiere tocar código ni instalar plugin alguno: <strong><a title="Evitar pingbacks a nuestro propio blog en WordPress -- Infomático de Guardia" href="http://andalinux.wordpress.com/2009/01/26/evitar-pingbacks-a-nuestro-propio-blog-en-wordpress/">enlazar mediante rutas relativas</a></strong>, así de fácil.</p>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/como-evitar-trackbacks-propios-en-wordpress-sin-tocar-el-codigo-ni-tirar-de-plugin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo segregar los trackbacks internos para que no aparezcan en la lista de comentarios de una entrada en WordPress</title>
		<link>http://voragine.net/wordpress/como-segregar-los-trackbacks-internos-para-que-no-aparezcan-en-la-lista-de-comentarios-de-una-entrada-en-wordpress</link>
		<comments>http://voragine.net/wordpress/como-segregar-los-trackbacks-internos-para-que-no-aparezcan-en-la-lista-de-comentarios-de-una-entrada-en-wordpress#comments</comments>
		<pubDate>Wed, 19 Oct 2011 14:41:53 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[pingbacks]]></category>
		<category><![CDATA[trackbacks]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=773</guid>
		<description><![CDATA[Si lo que necesitas es <strong>detectar qué trackbacks se han producido por enlazar de manera interna contenido de tu propio sitio web, y evitar que aparezcan en el listado de comentarios</strong>, lo único que tienes que hacer es introducir una sentencia condicional en el loop de comentarios que segregue los trackbacks y con la orden <a title="strpos -- php.net" href="http://php.net/manual/en/function.strpos.php"><code>strpos();</code></a> detectar aquellos que contengan la URL de tu sitio web.]]></description>
			<content:encoded><![CDATA[<p>Si lo que necesitas es <strong>detectar qué trackbacks se han producido por enlazar de manera interna contenido de tu propio sitio web, y evitar que aparezcan en el listado de comentarios</strong>, lo único que tienes que hacer es introducir una sentencia condicional en el loop de comentarios que segregue los trackbacks y con la orden <a title="strpos -- php.net" href="http://php.net/manual/en/function.strpos.php"><code>strpos();</code></a> detectar aquellos que contengan la URL de tu sitio web.</p>
<pre class="brush: php; title: ; notranslate">
foreach ($comments as $comment) { // comienza el loop de comentarios
 $comment_type = get_comment_type();
 $comment_auth_url = $comment---&gt;comment_author_url;
 $string_to_find = 'http://aaaaarte.com';
 $pos = strpos($comment_auth_url, $string_to_find);

 if ( $comment_type == 'comment' || $comment_type != 'comment' &amp;&amp; $pos === false ) { // si es un comentario o un trackback externo
  // código para mostrar cada comentario

 } else { // si es un trackback interno
  // no hacer nada
 }

} // fin del loop de comentarios
</pre>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/wordpress/como-segregar-los-trackbacks-internos-para-que-no-aparezcan-en-la-lista-de-comentarios-de-una-entrada-en-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cabecera mínima en HTML5 para WordPress</title>
		<link>http://voragine.net/weblogs/cabecera-minima-en-html5-para-wordpress</link>
		<comments>http://voragine.net/weblogs/cabecera-minima-en-html5-para-wordpress#comments</comments>
		<pubDate>Thu, 06 Oct 2011 08:00:14 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[get_bloginfo]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[wp_head]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=747</guid>
		<description><![CDATA[Con la aparición de la nueva versión de HTML, HTML5, se impone actualizar el código de muchas páginas o programar las nuevas <strong><a title="Construyendo una cabecera mínima pero correcta en HTML5: diferencias entre HTML4.01 y HTML5 dentro de la etiqueta head -- voragine.net" href="http://voragine.net/weblogs/construyendo-una-cabecera-minima-pero-correcta-en-html5-diferencias-entre-html4-01-y-html5-dentro-de-la-etiqueta-head">teniendo en cuenta las nuevas etiquetas y atributos</a></strong>. En el caso de que estemos trabajando dentro del sistema <strong>WordPress</strong> además debemos integrar los comandos propios de este gestor de contenidos.]]></description>
			<content:encoded><![CDATA[<p>Con la aparición de la nueva versión de HTML, HTML5, se impone actualizar el código de muchas páginas o programar las nuevas <strong><a title="Construyendo una cabecera mínima pero correcta en HTML5: diferencias entre HTML4.01 y HTML5 dentro de la etiqueta head -- voragine.net" href="http://voragine.net/weblogs/construyendo-una-cabecera-minima-pero-correcta-en-html5-diferencias-entre-html4-01-y-html5-dentro-de-la-etiqueta-head">teniendo en cuenta las nuevas etiquetas y atributos</a></strong>. En el caso de que estemos trabajando dentro del sistema <strong>WordPress</strong> además debemos integrar los comandos propios de este gestor de contenidos.</p>
<p>A continuación una cabecera mínima para WordPress que integra HTML5, comentada:</p>
<pre class="brush: php; title: ; notranslate">
&lt;!DOCTYPE html&gt;

&lt;?php // discriminamos según el navegador para hacer funcionar HTML5 en todos ?&gt;
&lt;!--[if IE 6]&gt;
&lt;html id=&quot;ie6&quot; &lt;?php language_attributes(); ?&gt;&gt;
&lt;![endif]--&gt;
&lt;!--[if IE 7]&gt;
&lt;html id=&quot;ie7&quot; &lt;?php language_attributes(); ?&gt;&gt;
&lt;![endif]--&gt;
&lt;!--[if IE 8]&gt;
&lt;html id=&quot;ie8&quot; &lt;?php language_attributes(); ?&gt;&gt;
&lt;![endif]--&gt;
&lt;!--[if !(IE 6) | !(IE 7) | !(IE <img src='http://voragine.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' />  ]&gt;&lt;!--&gt;
&lt;html &lt;?php language_attributes(); ?&gt;&gt;
&lt;!--&lt;![endif]--&gt;

&lt;head&gt;
&lt;meta charset=&quot;&lt;?php bloginfo( 'charset' ); ?&gt;&quot; /&gt;

&lt;?php // almacenamos la información que vayamos a usar varias veces para no hacer varias consultas iguales a base de datos
$blogname = get_bloginfo('name');
$blogdesc = get_bloginfo('description');
$blogurl = get_bloginfo('url');
$blogtemplate = get_bloginfo('template_directory');
?&gt;

&lt;title&gt;
&lt;?php // el siguiente código devuelve el título de la página en función del contenido que se esté mostrando: home, archivos, single...
// hack del tema twentyeleven
        global $page, $paged;

        wp_title( '|', true, 'right' );

        // Add the blog name.
        bloginfo( 'name' );

        // Add the blog description for the home/front page.
        $site_description = get_bloginfo( 'description', 'display' );
        if ( $site_description &amp;&amp; ( is_home() || is_front_page() ) )
                echo &quot; | $site_description&quot;;

        // Add a page number if necessary:
        if ( $paged &gt;= 2 || $page &gt;= 2 )
                echo ' | ' . sprintf( __( 'Page %s', 'twentyeleven' ), max( $paged, $page ) );

        ?&gt;
&lt;/title&gt;

&lt;meta content=&quot;Nombre del autor&quot; name=&quot;author&quot; /&gt;
&lt;meta content=&quot;&lt;?php echo $blogdesc ?&gt;&quot; name=&quot;description&quot; /&gt;
&lt;meta content=&quot;etiqueta1, etiqueta2, etiqueta3&quot; name=&quot;keywords&quot; /&gt;

&lt;?php // el relationships meta data profile antes se incluía con un atributo de la etiqueta head que con HTML5 ha desaparecido; ahora hay que incluirlo con una etiqueta link ?&gt;
&lt;link rel=&quot;profile&quot; href=&quot;http://gmpg.org/xfn/11&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php bloginfo('stylesheet_url'); ?&gt;&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php echo &quot;$blogtemplate/style.php&quot; ?&gt;&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php echo &quot;$blogtemplate/style-print.css&quot; ?&gt;&quot; type=&quot;text/css&quot; media=&quot;print&quot; /&gt;
&lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;&lt;?php echo $blogname; ?&gt; RSS Feed suscription&quot; href=&quot;&lt;?php bloginfo('rss2_url'); ?&gt;&quot; /&gt;
&lt;link rel=&quot;alternate&quot; type=&quot;application/atom+xml&quot; title=&quot;&lt;?php echo $blogname; ?&gt; Atom Feed suscription&quot; href=&quot;&lt;?php bloginfo('atom_url'); ?&gt;&quot; /&gt;
&lt;link rel=&quot;pingback&quot; href=&quot;&lt;?php bloginfo('pingback_url'); ?&gt;&quot; /&gt;

&lt;?php // este hook de WordPress es lo que devuelve las funciones complementarias necesarias para plugins y otros módulos, por ejemplo la hoja de estilos CSS de la barra que aparece cuando se ha iniciado sesión
wp_head(); ?&gt;

&lt;/head&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/weblogs/cabecera-minima-en-html5-para-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo configurar el formato de las fechas con la etiqueta time de HTML5: el atributo datetime</title>
		<link>http://voragine.net/weblogs/como-configurar-el-formato-de-las-fechas-con-la-etiqueta-time-de-html5-el-atributo-datetime</link>
		<comments>http://voragine.net/weblogs/como-configurar-el-formato-de-las-fechas-con-la-etiqueta-time-de-html5-el-atributo-datetime#comments</comments>
		<pubDate>Wed, 05 Oct 2011 15:07:32 +0000</pubDate>
		<dc:creator>skotperez</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[get_the_time]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[the_time]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://voragine.net/?p=744</guid>
		<description><![CDATA[Las fechas que envolvamos con la etiqueta time tienen que tener un formato determinado para que se indexen correctamente en los buscadores, un formato que no tiene por qué ser el más adecuado para un lector. Para conseguir un formato más humano en las fechas y las horas que envolvemos con la etiqueta <code>time</code> de HTML5 <strong><a title="Marking HTML5 time with PHP -- steve st's blog" href="http://stevest.com/2011/marking-html5-time-with-php/">podemos usar el atributo </a><code><a title="Marking HTML5 time with PHP -- steve st's blog" href="http://stevest.com/2011/marking-html5-time-with-php/">datetime</a></code></strong>.]]></description>
			<content:encoded><![CDATA[<p>Las fechas que envolvamos con la etiqueta time tienen que tener un formato determinado para que se indexen correctamente en los buscadores, un formato que no tiene por qué ser el más adecuado para un lector. Para conseguir un formato más humano en las fechas y las horas que envolvemos con la etiqueta <code>time</code> de HTML5 <strong><a title="Marking HTML5 time with PHP -- steve st's blog" href="http://stevest.com/2011/marking-html5-time-with-php/">podemos usar el atributo </a><code><a title="Marking HTML5 time with PHP -- steve st's blog" href="http://stevest.com/2011/marking-html5-time-with-php/">datetime</a></code></strong>. Por ejemplo:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;time datetime=&quot;2011-10-05&quot;&gt;5 de octubre de 2011&lt;/time&gt;
&lt;time datetime=&quot;2011-10-05&quot;&gt;Hoy&lt;/time&gt;
</pre>
<p>Si estamos trabajando con el gestor de contenidos WordPress se traduciría en lo siguiente:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$post_date_human = get_the_time('d \d\e F \d\e Y');
 $post_date = get_the_time('Y-m-d');
 echo &quot;&lt;time datetime=&quot;$post_date&quot;&gt;$post_date_human&lt;/time&gt;&quot;;
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://voragine.net/weblogs/como-configurar-el-formato-de-las-fechas-con-la-etiqueta-time-de-html5-el-atributo-datetime/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

