<?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>aNieto2K &#187; hacks</title>
	<atom:link href="http://www.anieto2k.com/category/wordpress/hacks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anieto2k.com</link>
	<description>Desarrollo web, Wordpress, y alguna cosilla más</description>
	<lastBuildDate>Wed, 17 Mar 2010 02:57:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS Sprites para mejorar las fechas de tus posts</title>
		<link>http://www.anieto2k.com/2010/02/04/css-sprites-para-mejorar-las-fechas-de-tus-posts/</link>
		<comments>http://www.anieto2k.com/2010/02/04/css-sprites-para-mejorar-las-fechas-de-tus-posts/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 08:02:20 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wordpress. themes]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9663</guid>
		<description><![CDATA[Hace ya tiempo, vimos como introducir un calendar con las fechas en tus posts. Un sistema que permite darle un aspecto diferente a tu wordpress. En WpBeginner dán un paso más y usando la CSS Sprites genera un elegante sistema que se basa en desplazarse por encima de una imágen para mostrar la fecha.

(Ver Imagen)
Como [...]]]></description>
			<content:encoded><![CDATA[Hace ya tiempo, vimos como <a href="http://www.anieto2k.com/2006/08/30/pon-un-calendario-a-tus-fechas-en-wordpress/">introducir un calendar con las fechas en tus posts</a>. Un sistema que permite darle un aspecto diferente a tu wordpress. En <a href="http://www.wpbeginner.com/wp-themes/use-css-sprites-to-beautify-your-wordpress-post-dates/">WpBeginner dán un paso más y usando la CSS Sprites</a> genera un elegante sistema que se basa en desplazarse por encima de una imágen para mostrar la fecha.
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2010/02/dates-css-sprites-large.gif"><img src="http://www.anieto2k.com/wp-content/uploads/2010/02/dates-css-sprites-large.gif" alt="dates-css-sprites-large" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2010/02/dates-css-sprites-large.gif"><small>(Ver Imagen)</small></a></p>
Como vemos en <a href="http://www.wpbeginner.com/guestposts/todd-santoro-css-sprites/date_img.png">la imágen</a>, tenemos las fechas desde 2009 a 2014 y con el siguiente código CSS podremos mostrar el año que deseemos.
<pre><code>/*Date Sprite */
.postdate {
position: relative;
width: 66px;
height: 60px;
float: left;
}
.month, .day, .year {
position: absolute;
text-indent: -1000em;
background-image: url(images/date_img.png);
background-repeat: no-repeat;
}
.month { top: 10px; left: 0; width: 33px; height: 30px;}
.day { top: 30px; left: 0; width: 33px; height: 30px;}
.year { bottom: 0; right: 13px; width: 20px; height: 60px;}

.m-01 { background-position: 0 0px;}
.m-02 { background-position: 0 -30px;}
.m-03 { background-position: 0 -62px;}
.m-04 { background-position: 0 -94px;}
.m-05 { background-position: 0 -125px;}
.m-06 { background-position: 0 -155px;}
.m-07 { background-position: 0 -185px;}
.m-08 { background-position: 0 -217px;}
.m-09 { background-position: 0 -248px;}
.m-10 { background-position: 0 -279px;}
.m-11 { background-position: 0 -310px;}
.m-12 { background-position: 0 -341px;}

.d-01 { background-position: -51px 0;}
.d-02 { background-position: -51px -27px;}
.d-03 { background-position: -51px -57px;}
.d-04 { background-position: -51px -91px;}
.d-05 { background-position: -51px -122px;}
.d-06 { background-position: -51px -151px;}
.d-07 { background-position: -51px -185px;}
.d-08 { background-position: -51px -214px;}
.d-09 { background-position: -51px -249px;}
.d-10 { background-position: -51px -275px;}
.d-11 { background-position: -51px -309px;}
.d-12 { background-position: -51px -338px;}
.d-13 { background-position: -51px -373px;}
.d-14 { background-position: -51px -404px;}
.d-15 { background-position: -51px -436px;}
.d-16 { background-position: -51px -462px;}
.d-17 { background-position: -100px -0px;}
.d-18 { background-position: -100px -27px;}
.d-19 { background-position: -100px -57px;}
.d-20 { background-position: -100px -91px;}
.d-21 { background-position: -100px -122px;}
.d-22 { background-position: -100px -151px;}
.d-23 { background-position: -100px -185px;}
.d-24 { background-position: -100px -214px;}
.d-25 { background-position: -100px -249px;}
.d-26 { background-position: -100px -275px;}
.d-27 { background-position: -100px -309px;}
.d-28 { background-position: -100px -338px;}
.d-29 { background-position: -100px -373px;}
.d-30 { background-position: -100px -404px;}
.d-31 { background-position: -100px -436;}

.y-2009 { background-position: -150px 0;}
.y-2010 { background-position: -150px -60px;}
.y-2011 { background-position: -150px -120px;}
.y-2012 { background-position: -150px -180;}
.y-2013 { background-position: -150px -240px;}
.y-2014 { background-position: -150px -300px;}</code></pre>
El código HTML encargado de mostrar las imágenes se basa en el uso de clases que indicarán que porción de imágen hay que mostrar.
<pre><code>&lt;div class="postdate"&gt;
&lt;div class="month m-&lt;?php the_time("m") ?&gt;"&gt;&lt;?php the_time("M") ?&gt;&lt;/div&gt;
&lt;div class="day d-&lt;?php the_time("d") ?&gt;"&gt;&lt;?php the_time("d") ?&gt;&lt;/div&gt;
&lt;div class="year y-&lt;?php the_time("Y") ?&gt;"&gt;&lt;?php the_time("Y") ?&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre>
El resultado es que mediante la carga de<a href="http://www.wpbeginner.com/guestposts/todd-santoro-css-sprites/date_img.png"> una única imágen</a> disponemos de todas las fechas posibles entre estos 5 años y solo cambiando las clases de los hijos del elemento .postdate podremos mostrar una fecha u otra.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/10/15/como-crear-css-sprites/" rel="bookmark" title="Permanent Link: Como crear CSS sprites">Como crear CSS sprites</a></li><li><a href="http://www.anieto2k.com/2008/12/29/bordes-redondeados-con-css-sprites/" rel="bookmark" title="Permanent Link: Bordes redondeados con CSS Sprites">Bordes redondeados con CSS Sprites</a></li><li><a href="http://www.anieto2k.com/2006/09/30/fechas-mas-elegantes-con-css/" rel="bookmark" title="Permanent Link: Fechas más elegantes con CSS">Fechas más elegantes con CSS</a></li><li><a href="http://www.anieto2k.com/2006/07/05/mejoras-el-aspecto-de-tus-fechas-con-css/" rel="bookmark" title="Permanent Link: Mejoras el aspecto de tus fechas con CSS">Mejoras el aspecto de tus fechas con CSS</a></li><li><a href="http://www.anieto2k.com/2006/06/26/mostrar-los-ultimos-x-posts-separador-por-fechas/" rel="bookmark" title="Permanent Link: Mostrar los últimos X posts separados por fechas">Mostrar los últimos X posts separados por fechas</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2010/02/04/css-sprites-para-mejorar-las-fechas-de-tus-posts/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Deshabilitar el editor HTML de nuestro Wordpress</title>
		<link>http://www.anieto2k.com/2010/01/19/deshabilitar-el-editor-html-de-nuestro-wordpress/</link>
		<comments>http://www.anieto2k.com/2010/01/19/deshabilitar-el-editor-html-de-nuestro-wordpress/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 12:30:47 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wordpress.hacks]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9598</guid>
		<description><![CDATA[Aunque sin él yo no podría escribir mis artículos, es posible deshabilitar el editor HTML de nuestro Wordpress de una forma sencilla con alguna de estas opciones:
1) CSS: La opción con más estilo (¿lo pillais? :P)
Sin duda se trata de la solución más rápida y sencilla ya que simplemente tendremos que añadir un estilo CSS [...]]]></description>
			<content:encoded><![CDATA[Aunque sin él yo no podría escribir mis artículos, es posible <a href="http://wpengineer.com/disable-html-editor-wordpress/">deshabilitar el editor HTML de nuestro Wordpress</a> de una forma sencilla con alguna de estas opciones:
<h3>1) CSS: La opción con más estilo (¿lo pillais? :P)</h3>
Sin duda se trata de la solución más rápida y sencilla ya que simplemente tendremos que añadir un estilo CSS al panel de administrador.
<pre><code><strong>// Añadir el CSS directamente
</strong>function removeHTMLEditorCSS(){
 echo '&lt;style type="text/css"&gt;#editor-toolbar #edButtonHTML, #quicktags {display: none;}&lt;/style&gt;';
}

add_action('admin_head', 'removeHTMLEditorCSS');

<strong>// Añadir un fichero CSS externo
</strong><em>fichero: removeHTMLEditor.css</em>
#editor-toolbar #edButtonHTML, #quicktags {display: none;}

wp_register_style('removeHTMLEditorCSS', '/ruta/css/removeHTMLEditor.css');
wp_enqueue_style('removeHTMLEditorCSS');</code></pre>
<h3>2) Javascript: La más rápida</h3>
Desde Javascript podemos borrar directamente el botón y no permitir usar esta opción:
<pre><code>function removeHTMLEditorJS(){
 echo 'jQuery(document).ready(function($) {
         $("#edButtonHTML").remove();
       });';
}

add_action('admin_footer', 'removeHTMLEditorJS');
</code></pre>
<h3>3) PHP: La más limpia</h3>
En las dos anteriores, aunque son efectivas, dejamos la opción de recuperar la opción directamente desde el mismo navegador, desde PHP podemos eliminar el botón dejando la opción perfectamente deshabilitada.
<pre><code>function my_default_editor() {
 $r = 'tinymce'; // html or tinymce
 return $r;
}
add_filter( 'wp_default_editor', 'my_default_editor' );

<strong>// Versión reducida
</strong>add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') );</code></pre>
<h3>Conclusión</h3>
Siempre que puedas estas cosas, deberían ir en un fichero de configuración alojado en el servidor y todas las opciones son igual de válidas.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2007/03/28/wordpress-dashboard-editor-widgets-en-tu-dashboard/" rel="bookmark" title="Permanent Link: Wordpress Dashboard Editor, widgets en tu dashboard">Wordpress Dashboard Editor, widgets en tu dashboard</a></li><li><a href="http://www.anieto2k.com/2007/02/08/amplia-el-editor-enriquecido-de-wordpress-21/" rel="bookmark" title="Permanent Link: Amplia el editor enriquecido de Wordpress 2.1">Amplia el editor enriquecido de Wordpress 2.1</a></li><li><a href="http://www.anieto2k.com/2007/07/02/ampliando-mas-las-opciones-del-editor-enriquecido-de-wordpress/" rel="bookmark" title="Permanent Link: Ampliando más las opciones del editor enriquecido de Wordpress">Ampliando más las opciones del editor enriquecido de Wordpress</a></li><li><a href="http://www.anieto2k.com/2009/02/21/wordpress-28-con-un-editor-de-codigo-decente/" rel="bookmark" title="Permanent Link: Wordpress 2.8 con un editor de código decente">Wordpress 2.8 con un editor de código decente</a></li><li><a href="http://www.anieto2k.com/2009/09/11/nueva-funcionalidad-de-wordpress-2-9-en-la-edicion-de-imagenes/" rel="bookmark" title="Permanent Link: Nueva funcionalidad de Wordpress 2.9 en la edición de imágenes">Nueva funcionalidad de Wordpress 2.9 en la edición de imágenes</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2010/01/19/deshabilitar-el-editor-html-de-nuestro-wordpress/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Optimiza la frecuencia de refresco del RSS de tu Wordpress</title>
		<link>http://www.anieto2k.com/2009/12/21/optimiza-la-frecuencia-de-refresco-del-rss-de-tu-wordpress/</link>
		<comments>http://www.anieto2k.com/2009/12/21/optimiza-la-frecuencia-de-refresco-del-rss-de-tu-wordpress/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 10:38:56 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[estandares]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9430</guid>
		<description><![CDATA[Un módulo del estandar RDF, concretamente el destinado sobre la frecuencia de sincronización, que este próximo año cumplirá 10 años de su aparición nos permite especificar la frecuencia con la que los agregadores de noticia deben comprobar si el feed ha cambiado.

Por defecto Wordpress, asume que eres una máquina y que no paras de actualizar [...]]]></description>
			<content:encoded><![CDATA[Un módulo del <a href="http://www.w3.org/RDF/">estandar RDF</a>, concretamente el destinado sobre <a href="http://web.resource.org/rss/1.0/modules/syndication/">la frecuencia de sincronización</a>, que este próximo año cumplirá 10 años de su aparición nos permite especificar la frecuencia con la que los agregadores de noticia deben comprobar si el feed ha cambiado.

Por defecto Wordpress, asume que eres una máquina y que no paras de actualizar en todo el día:
<pre><code>&lt;sy:updatePeriod&gt;hourly&lt;/sy:updatePeriod&gt;
&lt;sy:updateFrequency&gt;1&lt;/sy:updateFrequency&gt;</code></pre>
<a href="http://www.anieto2k.com/2009/05/22/%C2%BFcomo-y-donde-puedo-extender-wordpress/">Wordpress nos añade dos filtros</a> para modificar esta frecuencia a nuestro gusto. Para ello bastará con incluir estas líneas en el fichero functions.php de nuestro theme para conseguir una frecuencia de sincronización de 4 veces al día.
<pre><code>add_filter( 'rss_update_period',    create_function( '', 'return "daily";' ) );
add_filter( 'rss_update_frequency', create_function( '', 'return 4;' ) );</code></pre>
<a href="http://wpengineer.com/optimize-syndication-frequenzy/">Via</a><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2007/01/03/disena-para-la-wii/" rel="bookmark" title="Permanent Link: Diseña para la Wii">Diseña para la Wii</a></li><li><a href="http://www.anieto2k.com/2008/12/23/optimiza-el-css-sin-usar-php/" rel="bookmark" title="Permanent Link: Optimiza el CSS sin usar PHP">Optimiza el CSS sin usar PHP</a></li><li><a href="http://www.anieto2k.com/2007/07/29/optimiza-tu-tag-title-para-mejorar-el-seo-de-tu-wordpress/" rel="bookmark" title="Permanent Link: Optimiza tu tag title para mejorar el SEO de tu Wordpress">Optimiza tu tag title para mejorar el SEO de tu Wordpress</a></li><li><a href="http://www.anieto2k.com/2006/12/24/wordpress-wii-optimiza-tu-wp-para-wii/" rel="bookmark" title="Permanent Link: Wordpress Wii, optimiza tu WP para Wii">Wordpress Wii, optimiza tu WP para Wii</a></li><li><a href="http://www.anieto2k.com/2008/05/16/wordpress-26-incluira-google-gears-para-trabajar-offline/" rel="bookmark" title="Permanent Link: Wordpress 2.6 incluirá Google Gears para trabajar offline">Wordpress 2.6 incluirá Google Gears para trabajar offline</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/12/21/optimiza-la-frecuencia-de-refresco-del-rss-de-tu-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Truco del campo oculto antispam para Wordpress más fácil todavía</title>
		<link>http://www.anieto2k.com/2009/12/04/truco-del-campo-oculto-antispam-para-wordpress-mas-facil-todavia/</link>
		<comments>http://www.anieto2k.com/2009/12/04/truco-del-campo-oculto-antispam-para-wordpress-mas-facil-todavia/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:02:16 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[wordpress.hacks]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9361</guid>
		<description><![CDATA[Este artículo hace ya más de un año que comencé a escribirlo y hoy que he tenido unos minutos para repasarlo y modificar un poco el código lo termino.

Hace ya mucho tiempo, Jose Ramón (Manz) publicó en Emezeta un sistema bastante ingenioso para capear el problema del SPAM en nuestros blogs.
El sistema

(Ver Imagen)

El sistema, se [...]]]></description>
			<content:encoded><![CDATA[Este artículo hace ya más de un año que comencé a escribirlo y hoy que he tenido unos minutos para repasarlo y modificar un poco el código lo termino.

Hace ya mucho tiempo, <a href="http://www.anieto2k.com/2008/07/10/8-de-10-entrevista-a-jose-roman-hernandez-martinmanz/">Jose Ramón (Manz)</a> publicó en <a href="http://www.emezeta.com/articulos/sistema-antispam-para-blogs">Emezeta un sistema bastante ingenioso para capear el problema del SPAM en nuestros blogs</a>.
<h3>El sistema</h3>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/12/antispam3.png"><img src="http://www.anieto2k.com/wp-content/uploads/2009/12/antispam3.png" alt="antispam3" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2009/12/antispam3.png"><small>(Ver Imagen)</small></a>

El sistema, se basa en pensar de forma dual a la hora de implementar el formulario de comentarios de tu blog (que apartir de este momento, va a ser Wordpress), y barajar la idea de que un robot pueda rellenar los campos automáticamente haciendo que sus comentarios entraran como un comentario normal. Akismet, y demás plugins antispam, tienen una gran lista de URL's, agentes de usuarios, emails e IP's que comprueban para comprobar que un robot es malicioso o no, pero estos sistemas, como ya bien sabemos, no son del todo eficaces. Por eso, hemos de engañar al robot :D
<h4>¿Como lo engañamos?</h4>
La propuesta de Manz, es la de añadir un campo oculto (mediante CSS) con el nombre del elemento destinado para el nombre del usuario, en el caso de Wordpress usaremos author, con un valor X predefinido.
<pre><code>&lt;input type="text" name="author" value="X"<strong> class="oculto" </strong>/&gt;
<strong>// CSS
</strong>input.oculto {display:none;}</code></pre>
Este campo, será el señuelo que los robots editarán automáticamente al procesar la página, principalmente por que es un <code>&lt;input /&gt;</code> y además se llama <code>author</code>, lo que hace complicado saber si esa página lo tiene implementado o es una trampa.

Para los usuarios, incluiremos un nuevo elemento <code>&lt;input /&gt;</code> con un nombre a nuestra elección.
<pre><code>&lt;input name="nombrebueno" type="text" class="author" /&gt;</code></pre>
El usuario, verá este campo y será en el que introducirá su nombre de usuario. A simple vista podemos ver el problema que nos encontramos al realizar este cambio, el nombre del usuario siempre será X, ya que Wordpress está preparado para leer <code>author</code> como nombre de usuario, y evidentemente no conoce el campo <em>nombrebueno</em> que hemos creado nosotros.

Por este motivo hemos de modificar el código de Wordpress para añadir unas pocas líneas (voy a explicar como lo tenía yo antes de implementar la funcionalidad que veremos abajo):
<pre><code><strong>wp-config.php
</strong>define("SPAM_CONTROL", "kaminitos"); // No sé por que puse eso...</code></pre>
<pre><strong>wp-comment-post.php
</strong>$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

<strong>// Añadimos el control del campo nuevo
</strong>if ($_POST["author"] != SPAM_CONTROL) die("SPAM");
$comment_author       = ( isset($_POST['secure']) )  ? trim(strip_tags($_POST['secure'])) : null;</pre>
Se puede hacer más sencillo, editando únicamente el fichero <strong>wp-comment-post.php</strong>, pero de esta forma tengo control sobre lo que aparece en el campo oculto.

Evidentemente, este sistema, me obliga a añadir esas dos líneas de código cada vez que actualizo Wordpress, lo que se convierte en algo, que aunque no es laborioso, es muy pesado. Para evitar tener que modificar el código de Wordpress en cada actualización, yo propongo este código.
<h3>Sistema antispam de campo oculto más cómodo :D</h3>
<pre><code><strong>// Mensaje que mostramos a los SPAM
</strong>define('MESSAGE', 'SPAM!!!');
<strong>// Nombre del campo que usaremos para alojar el verdadero nombre del usuario
</strong>define('NOMBRE_CAMPO', 'secure');
<strong>// Clave única que será modificada por el bot
</strong>define('WP_ANTI_SPAM', 'kko');

add_filter('pre_comment_author_name', '_pre_comment_author_name');
function _pre_comment_author_name($comment_author_name = ''){
<strong> // Devolvemos el nombre del autor sinó estamos pasando los campos necesarios
</strong> if (!isset($_POST['author'], $_POST[NOMBRE_CAMPO])) return $comment_author_name;

<strong> // Matamos el proceso
</strong> if (isset($_POST['author']) &amp;&amp; $_POST['author'] != WP_ANTI_SPAM) die(MESSAGE);

<strong> // Cambiamos el nombre del author
</strong> global $wpdb;
 return $wpdb-&gt;escape(trim(strip_tags($_POST[NOMBRE_CAMPO])));
}

function get_anti_spam_input($comment_author){
 return '&lt;input type="hidden" name="'.NOMBRE_CAMPO.'" value="'.esc_attr($comment_author).'" /&gt;';
}

function anti_spam_input($comment_author){
 echo get_anti_spam_input($comment_author);
}

function get_author_input($comment_author){
 return '&lt;input type="hidden" name="author" value="'.WP_ANTI_SPAM.'" /&gt;';
}

function author_input($comment_author){
 echo get_author_input($comment_author);
}</code></pre>
Este código, lo incluimos en el fichero <strong>functions.php</strong> de nuestro theme. Como vemos en la parte superior, tenemos 3 <code>define()</code> que nos permiten declarar 3 <span style="text-decoration: line-through;">variables</span>constantes que nos hará nuestro sistema más personalizable. Después, vemos una función que se aplica al filtro <code>pre_comment_author_name</code> en la que comprobamos que el campo oculto no ha sido modificado. En caso de detectar el cambio, matamos el proceso en ese mismo momento, mostrando el mensaje que hayamos definido previamente.

En caso de que el campo oculto no haya sido modificado, entonces reemplazaremos el nombre de usuario por el del campo visible para el usuario. Este sistema nos permite intercalar este proceso y hacer que en caso comentario válido, continúe sin ningún problema.
<h3>Modificar el theme</h3>
Después para facilitar el trabajo de modificación del theme, he añadido unos métodos para pintar (o devolver como cadena) los elementos <code>&lt;input /&gt;</code> que intervienen en este sistema. Usaremos, como siempre, el theme <strong>default</strong> de Wordpress, y usaremos únicamente el fichero <strong>comment.php</strong> del mismo.

Básicamente, el único cambio que tendremos que realizar es el cambio de esta línea:
<pre><code>&lt;input type="text" name="author" id="author" value="&lt;?php echo esc_attr($comment_author); ?&gt;" size="22" tabindex="1" &lt;?php if ($req) echo "aria-required='true'"; ?&gt; /&gt;</code></pre>
Por estas dos
<pre>&lt;?php
 author_input($comment_author);
 anti_spam_input($comment_author);
?&gt;</pre>
Estos dos funciones se encargarán de pintar los elementos <code>&lt;input /&gt;</code> que vamos a necesitar. <em>Evidentemente, si tu theme tiene estilos o clases aplicados a estos elemento tendrás que modificarlos en las funciones <code>get_anti_spam_input()</code> <code>get_author_input()</code> del fichero <strong>functions.php</strong> que hemos incluido antes.</em>

Sencillo, ¿verdad? :D
<h3>Resultado</h3>
El resultado, os puedo garántizar que es 100% satisfactorio y que junto a Akismet el SPAM (por el momento) deja de ser un problema.</p><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2008/06/03/typepad-antispam-competencia-para-akismet/" rel="bookmark" title="Permanent Link: TypePad AntiSpam, competencia para Akismet">TypePad AntiSpam, competencia para Akismet</a></li><li><a href="http://www.anieto2k.com/2007/06/24/los-labels-e-inputs-son-pareja-no-les-van-los-trios/" rel="bookmark" title="Permanent Link: Los labels e inputs son pareja, no les van los trios">Los labels e inputs son pareja, no les van los trios</a></li><li><a href="http://www.anieto2k.com/2005/12/10/anade-el-wysiwyg-de-wp-20-a-los-comentarios/" rel="bookmark" title="Permanent Link: w2c &#8212; WYSIWYG 2 COMMENTS">w2c &#8212; WYSIWYG 2 COMMENTS</a></li><li><a href="http://www.anieto2k.com/2008/06/12/google-reader-tiene-truco/" rel="bookmark" title="Permanent Link: Google Reader tiene truco">Google Reader tiene truco</a></li><li><a href="http://www.anieto2k.com/2006/03/21/dos-nuevos-themes-para-wordpress/" rel="bookmark" title="Permanent Link: Dos nuevos themes para Wordpress">Dos nuevos themes para Wordpress</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/12/04/truco-del-campo-oculto-antispam-para-wordpress-mas-facil-todavia/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>La funcionalidad &#8220;post-image&#8221; de Wordpress 2.9</title>
		<link>http://www.anieto2k.com/2009/11/17/la-funcionalidad-post-image-de-wordpress-2-9/</link>
		<comments>http://www.anieto2k.com/2009/11/17/la-funcionalidad-post-image-de-wordpress-2-9/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 14:45:50 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9298</guid>
		<description><![CDATA[Una de las nuevas funcionalidades que nos encontraremos en Wordpress 2.9 es el llamado post-image, que como ya hemos explicado previamente se trata de un sistema que nos permite asociar a un post una imagen y poder usarla en un theme.

Justin Tadlock muestra un completo artículo mostrando como hacer uso de esta funcionalidad.
1) Permitir la [...]]]></description>
			<content:encoded><![CDATA[Una de las nuevas funcionalidades que nos encontraremos en Wordpress 2.9 es el llamado <strong>post-image</strong>, que como ya hemos explicado previamente se trata de un sistema que nos permite asociar a un post una imagen y poder usarla en un theme.

<a href="http://justintadlock.com/archives/2009/11/16/everything-you-need-to-know-about-wordpress-2-9s-post-image-feature">Justin Tadlock muestra un completo artículo</a> mostrando como hacer uso de esta funcionalidad.
<h3>1) Permitir la funcionalidad</h3>
Como vimos en el post de las nuevas funcionalidades de Wordpress 2.9, el theme iba a coger algo de relevancia permitiendo activar/desactivar funcionalidades de Wordpress desde el fichero functions.php.

Esta capacidad nos permitirá activar esta funcionalidad añadiendo un simple línea a nuestro theme:
<pre><code>add_theme_support( 'post-thumbnails' );</code></pre>
Esta línea, nos activará la funcionalidad de post-image en nuestro Wordpress, permitiendo que podamos ver un box más en nuestra página de "Nueva Entrada".
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/11/wordpress-2.9-post-image.JPG"><img src="http://www.anieto2k.com/wp-content/uploads/2009/11/wordpress-2.9-post-image.JPG" alt="wordpress-2.9-post-image" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2009/11/wordpress-2.9-post-image.JPG"><small>(Ver Imagen)</small></a>

Allí podremos seleccionar una imagen que será asociada al post.
<h3>2) Usar la funcionalidad</h3>
Una vez asociada la imagen, ya solo nos queda hacer que nuestro theme muestre la imagen donde queramos. Para ello tenemos una serie de funciones que debemos conocer:
<h4><code>the_post_image($size)</code></h4>
Esta función nos permite mostrar la imagen en el punto en el que la llamamos, requiere estar incluida <a href="http://www.anieto2k.com/2006/02/15/el-loop-de-wordpress-en-accion/">dentro del Loop</a> para funcionar.
<pre><code>&lt;?php while( have_posts() ) : the_post(); ?&gt;
 &lt;div&gt;
 &lt;h1&gt;&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title() ?&gt;&lt;/a&gt;&lt;/h1&gt;
 &lt;?php the_post_image() ?&gt;
 &lt;?php the_content() ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;</code></pre>
Podemos usarla con un parámetro para especificar el tamaño de la imagen que queremos mostrar:
<ul>
	<li>thumbnail</li>
	<li>medium</li>
	<li>full</li>
</ul>
Todas hacen referencia a la configuración de imagenes del apartado <strong>Opciones &gt; Media</strong> de nuestro panel de control.
<h4><code>has_post_image()</code></h4>
Para comprobar si un post tiene asociada una imagen deberemos usar <code>has_post_image()</code> que nos devolverá <code>true</code> o <code>false</code>.
<pre><code>&lt;?php
	if ( has_post_image() )
		the_post_image( 'thumbnail' );
	else
		echo '&lt;img src="default-image.png" alt="Example Image" title="Example" /&gt;';
?&gt;</code></pre>
<h4><code>get_post_image_id()</code></h4>
Si necesitamos obtener el <code>ID</code> de la imagen podremos hacer uso de esta función que nos devolverá el <code>ID</code>.
<pre><code>$image_id = get_post_image_id();</code></pre>
<h4><code>get_the_post_image( $id, $size )</code></h4>
Si necesitamos obtener la imagen de un post fuera del Loop podemos acceder directamente a ella indicándole el ID del post y el tamaño de la imagen que necesitamos.
<pre><code>$image = get_the_post_image( $post-&gt;ID, 'thumbnail' );</code></pre>
<h3>3) Filtros y actions</h3>
Además de las funciones que nos permiten trabajar cómodamente con la imágen asociada, tenemos una serie de filtros que nos permiten personalizar más aún la funcionalidad y obtener resultados de lo más dispares.
<pre><code><strong>//Filters
</strong> - post_image_size
 - post_image_html
<strong>// Actions
</strong> - begin_fetch_post_image_html
 - end_fetch_post_image_html</code></pre>
Veamos un ejemplo de Justin nos muestra con el que podemos cambiar el HTML de salida de la imagen que vamos a mostrar.
<pre><code>add_filter( 'post_image_html', 'my_post_image_html', 10, 3 );
function my_post_image_html( $html, $post_id, $post_image_id );
	$html = '&lt;a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_post_field( 'post_title', $post_id ) ) . '"&gt;' . $html . '&lt;/a&gt;';
	return $html;

}</code></pre>
Se trata de una gran funcionalidad, que muchos desarrolladores de themes estarán deseando usar en sus creaciones.</p><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2009/09/11/nueva-funcionalidad-de-wordpress-2-9-en-la-edicion-de-imagenes/" rel="bookmark" title="Permanent Link: Nueva funcionalidad de Wordpress 2.9 en la edición de imágenes">Nueva funcionalidad de Wordpress 2.9 en la edición de imágenes</a></li><li><a href="http://www.anieto2k.com/2009/12/02/wordpress-2-9-beta-2/" rel="bookmark" title="Permanent Link: Wordpress 2.9 beta 2">Wordpress 2.9 beta 2</a></li><li><a href="http://www.anieto2k.com/2008/12/01/enviate-notificaciones-cuando-las-imagenes-no-carguen/" rel="bookmark" title="Permanent Link: Envíate notificaciones cuando las imagenes no carguen">Envíate notificaciones cuando las imagenes no carguen</a></li><li><a href="http://www.anieto2k.com/2009/09/21/como-usar-los-custom-fields-en-wordpress/" rel="bookmark" title="Permanent Link: Como usar los custom fields en Wordpress">Como usar los custom fields en Wordpress</a></li><li><a href="http://www.anieto2k.com/2008/02/19/classimage-imagenes-mas-faciles-con-php/" rel="bookmark" title="Permanent Link: Class.image, imagenes más fáciles con PHP">Class.image, imagenes más fáciles con PHP</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/11/17/la-funcionalidad-post-image-de-wordpress-2-9/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>La optimización definitiva de Wordpress</title>
		<link>http://www.anieto2k.com/2009/11/17/la-optimizacion-definitiva-de-wordpress/</link>
		<comments>http://www.anieto2k.com/2009/11/17/la-optimizacion-definitiva-de-wordpress/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 08:08:06 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[optimización]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9289</guid>
		<description><![CDATA[Hay que reconocer que aunque Wordpress es un buen software tiene una serie de puntos débiles que hacen que trabajar con él nos dé más de un dolor de cabeza. Entre los problemas que más detectamos es el excesivo consumo de memoria y de recursos en general que necesita para funcionar eficazmente. En estos casos, [...]]]></description>
			<content:encoded><![CDATA[Hay que reconocer que aunque Wordpress es un buen software tiene una serie de puntos débiles que hacen que trabajar con él nos dé más de un dolor de cabeza. Entre los problemas que más detectamos es <a href="http://www.anieto2k.com/2009/09/10/diferentes-formas-de-optimizar-el-consumo-de-memoria-de-wordpress-a-prueba/">el excesivo consumo de memoria</a> y de recursos en general que necesita para funcionar eficazmente. En estos casos, lo mejor es, sin duda, optimizar todo lo que Wordpress necesita para funcionar, desde el servidor web hasta <a href="http://www.anieto2k.com/2009/10/17/cuidando-la-base-de-datos-de-nuestro-wordpress/">el servidor de base de datos</a> pasándo por las imágenes que servimos y el javascript que le hacemos llegar al usuario. Con <a href="http://storecrowd.com/blog/wordpress-optimisation/">esta guía podrás optimizar al milímetro cualquier aspecto de la instalación de tu Wordpress</a>.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2008/08/26/%c2%bfla-lista-definitiva-para-los-usuarios-de-wordpress/" rel="bookmark" title="Permanent Link: ¿La lista definitiva para los usuarios de Wordpress?">¿La lista definitiva para los usuarios de Wordpress?</a></li><li><a href="http://www.anieto2k.com/2006/11/24/quick-thumbnail-una-solucion-al-problema-de-las-miniaturas/" rel="bookmark" title="Permanent Link: Quick Thumbnail, una solución al problema de las miniaturas">Quick Thumbnail, una solución al problema de las miniaturas</a></li><li><a href="http://www.anieto2k.com/2009/08/17/la-guia-definitiva-sobre-get-vs-post/" rel="bookmark" title="Permanent Link: La guia definitiva sobre GET vs POST">La guia definitiva sobre GET vs POST</a></li><li><a href="http://www.anieto2k.com/2007/06/22/me-voy-ya-ho-aguanto-mas/" rel="bookmark" title="Permanent Link: Me voy!! Ya no aguanto más">Me voy!! Ya no aguanto más</a></li><li><a href="http://www.anieto2k.com/2008/03/14/wp-supercache-nueva-version-06/" rel="bookmark" title="Permanent Link: WP-SuperCache, nueva versión 0.6">WP-SuperCache, nueva versión 0.6</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/11/17/la-optimizacion-definitiva-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Excerpt2Content, muestra todo el contenido a tus usuarios</title>
		<link>http://www.anieto2k.com/2009/11/04/excerpt2content-muestra-todo-el-contenido-a-tus-usuarios/</link>
		<comments>http://www.anieto2k.com/2009/11/04/excerpt2content-muestra-todo-el-contenido-a-tus-usuarios/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 09:36:14 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wordpress.hacks]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9213</guid>
		<description><![CDATA[Muchos son los mails que he recibido pidiendome una solución al problema de que el theme de su Wordpress muestra solo una pequeña porción del contenido. Esto es debido a que el theme que están usando está haciendo uso de la función the_excerpt() en lugar de the_content().

La diferencia es que la primera nos muestra únicamente [...]]]></description>
			<content:encoded><![CDATA[Muchos son los mails que he recibido pidiendome una solución al problema de que el theme de su Wordpress muestra solo una pequeña porción del contenido. Esto es debido a que el theme que están usando está haciendo uso de la función <a href="http://codex.wordpress.org/Template_Tags/the_excerpt"><code>the_excerpt()</code></a> en lugar de <a href="http://codex.wordpress.org/Template_Tags/the_content"><code>the_content()</code></a>.

La diferencia es que la primera nos muestra únicamente el extracto del artículo, sino lo hemos redactado este cogerá l<em>as primeras 55 palabras (por defecto) del artículo</em>, eliminando tags HTML como <code>&lt;img /&gt;</code>, <code>&lt;strong /&gt;</code>,... haciendo que el contenido tenga un aspecto de "extracto" del original. Generalmente este contenido está seguido de unos puntos suspensivos indicando que el artículo no está completo ([...]). Lo que hace que el usuario tenga que acceder a leer el artículo directamente para ver el contenido completo.

Por otro lado, <code>the_content()</code> nos muestra el contenido completo y nos permite cortarlo donde queramos mediante el uso de 2 tags:
<ul>
	<li><code>&lt;!--more--&gt;</code>: Añade un<a href="http://www.anieto2k.com/2005/12/28/cambiar-el-more-de-wordpress/"> texto de "Leer Más" (que puedes cambiar)</a> al final de la página principal y que te lleva al artículo completo.</li>
	<li><code>&lt;!--nextpage--&gt;</code>: Te permite generar una paginación y cada tag generará una página nueva.</li>
</ul>
<p style="text-align: center;"><a rel="lightbox" href="http://www.anieto2k.com/wp-content/uploads/2009/11/anieto2k_excerpt.JPG"><img src="http://www.anieto2k.com/wp-content/uploads/2009/11/anieto2k_excerpt-438x300.jpg" alt="anieto2k_excerpt" /></a>
<a href="http://www.anieto2k.com/wp-content/uploads/2009/11/anieto2k_excerpt.JPG"><small>(Ver Imagen)</small></a>

Muchos themes traen <code>the_excerpt()</code> por defecto, ya que la teoría dice (y la práctica lo demuestra) que al mostrar parte del contenido, el usuario genera un mayor número de páginas vistas (una de la página principal y una por cada noticia que quiere ver completa) pero en muchos casos quieres mostrar imágenes o simplemente no quieres que el usuario tenga que acceder a ver un post completo para leer toda la noticia, en estos casos tenemos varias soluciones.
<h3>1) Reemplazar <code>the_excerpt()</code> por <code>the_content()</code></h3>
La primera solución sería la de buscar en el theme que estamos usando la palabra <code>the_excerpt()</code> y reemplazarla por <code>the_content()</code> haciendo que siempre se muestre el contenido.
<h3>2) Añadir filtro a <code>the_excerpt()</code></h3>
Otra solución más sencilla y fácil de deshacer sería la de añadir un pequeño (muy pequeño) filtro a la llamada <code>the_excerpt()</code> para hacer que nos devuelva el contenido completo.
<pre><code>function excerpt2content(){
 return get_the_content();
}
<strong>// Añadimos excerpt2content al filtro</strong>
add_filter('get_the_excerpt', 'excerpt2content');</code></pre>
Este código, puede ir alojado en el fichero <code>functions.php</code> del theme y si queremos volver al estado inicial, simplemente tendremos que eliminar estas 4 líneas para volver a la normalidad :D</p><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2009/05/13/ocultar-contenido-a-los-usuarios-no-registrados/" rel="bookmark" title="Permanent Link: Ocultar contenido a los usuarios no registrados">Ocultar contenido a los usuarios no registrados</a></li><li><a href="http://www.anieto2k.com/2006/07/11/contenido-centrado-con-css/" rel="bookmark" title="Permanent Link: Contenido Centrado con CSS">Contenido Centrado con CSS</a></li><li><a href="http://www.anieto2k.com/2008/11/12/funciones-personalizadas-en-tu-wordpress/" rel="bookmark" title="Permanent Link: Funciones personalizadas en tu Wordpress">Funciones personalizadas en tu Wordpress</a></li><li><a href="http://www.anieto2k.com/2009/09/25/como-evitar-que-dejen-comentarios-en-google-sidewiki-desde-tu-pagina-web/" rel="bookmark" title="Permanent Link: Como evitar que dejen comentarios en Google Sidewiki desde tu página web">Como evitar que dejen comentarios en Google Sidewiki desde tu página web</a></li><li><a href="http://www.anieto2k.com/2007/03/19/creando-paginas-404-amigables-para-los-usuarios/" rel="bookmark" title="Permanent Link: Creando páginas 404 amigables para los usuarios">Creando páginas 404 amigables para los usuarios</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/11/04/excerpt2content-muestra-todo-el-contenido-a-tus-usuarios/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Ordenar artículos por orden de comentarios más recientes</title>
		<link>http://www.anieto2k.com/2009/11/02/ordenar-articulos-por-orden-de-comentarios-mas-recientes/</link>
		<comments>http://www.anieto2k.com/2009/11/02/ordenar-articulos-por-orden-de-comentarios-mas-recientes/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 17:29:45 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wordpress.hacks]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9201</guid>
		<description><![CDATA[En Stackoverflow descubro un sistema sencillo para ordenar nuestros posts por orden de comentarios más recientes. Esto nos permitirá mostrar los últimos artículos en los que hay actividad.
&#60;?php

$query = 'select wp_posts.*, max(comment_date) as comment_date
 from $wpdb-&#62;posts wp_posts
 right join $wpdb-&#62;comments
 on id = comment_post_id
 group by ID
 order by comment_date desc
 limit 10';

$results = $wpdb-&#62;get_results($query) [...]]]></description>
			<content:encoded><![CDATA[En <a href="http://stackoverflow.com/questions/698438/ordering-wordpress-posts-by-most-recent-comment">Stackoverflow descubro un sistema sencillo para ordenar nuestros posts por orden de comentarios más recientes</a>. Esto nos permitirá mostrar los últimos artículos en los que hay actividad.
<pre><code>&lt;?php

$query = 'select wp_posts.*, max(comment_date) as comment_date
 from $wpdb-&gt;posts wp_posts
 right join $wpdb-&gt;comments
 on id = comment_post_id
 group by ID
 order by comment_date desc
 limit 10';

$results = $wpdb-&gt;get_results($query) or die('!');
foreach ($results as $result):

?&gt;
[Aquí el template del post]
&lt;?php endforeach ?&gt;</code></pre>
Una interesante forma de mostrar de una forma dinámica por parte de la interacción de los usuarios los posts que han sido comentados recientemente.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2007/10/09/posicionamiento-de-los-atributos-css-de-los-elementos/" rel="bookmark" title="Permanent Link: Posicionamiento de los atributos CSS de los elementos">Posicionamiento de los atributos CSS de los elementos</a></li><li><a href="http://www.anieto2k.com/2006/06/21/tecnica-para-publicar-una-serie-de-articulos-en-tu-blog/" rel="bookmark" title="Permanent Link: Técnica para publicar una serie de artículos en tu blog">Técnica para publicar una serie de artículos en tu blog</a></li><li><a href="http://www.anieto2k.com/2006/11/06/accesibilidad-en-la-web/" rel="bookmark" title="Permanent Link: Accesibilidad en la Web">Accesibilidad en la Web</a></li><li><a href="http://www.anieto2k.com/2008/08/05/muestra-articulos-individuales-en-un-idioma-diferente/" rel="bookmark" title="Permanent Link: Muestra artículos individuales en un idioma diferente">Muestra artículos individuales en un idioma diferente</a></li><li><a href="http://www.anieto2k.com/2006/07/13/filenice-otro-explorador-de-ficheros/" rel="bookmark" title="Permanent Link: FileNice, otro explorador de ficheros">FileNice, otro explorador de ficheros</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/11/02/ordenar-articulos-por-orden-de-comentarios-mas-recientes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>rewind_posts, reiniciando nuestro Loop</title>
		<link>http://www.anieto2k.com/2009/10/24/rewind_posts-reiniciando-nuestro-loop/</link>
		<comments>http://www.anieto2k.com/2009/10/24/rewind_posts-reiniciando-nuestro-loop/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 15:18:31 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9157</guid>
		<description><![CDATA[Una de esas funciones que nos ayudan a hacer más fácil nuestro trabajo con Wordpress es rewind_posts(), y aunque su uso no es muy común, en alguna situación podemos alegrarnos de conocerla.
rewind_posts()
&#60;?php
 query_posts('....');
 while (have_posts()) : the_post();
 ...
 endwhile;

 // Reiniciamos los posts
 rewind_posts();

 // Nueva query_posts()
 query_posts('....');
 while (have_posts()) : the_post();
 ...
 endwhile;
 ?&#62;
Está [...]]]></description>
			<content:encoded><![CDATA[Una de esas funciones que nos ayudan a hacer más fácil nuestro trabajo con Wordpress es <code>rewind_posts()</code>, y aunque su uso no es muy común, en alguna situación podemos alegrarnos de conocerla.
<h3>rewind_posts()</h3>
<pre><code>&lt;?php
 query_posts('....');
 while (have_posts()) : the_post();
 ...
 endwhile;

 <strong>// Reiniciamos los posts</strong>
 rewind_posts();

 <strong>// Nueva query_posts()</strong>
 query_posts('....');
 while (have_posts()) : the_post();
 ...
 endwhile;
 ?&gt;</code></pre>
Está función, <a href="http://codex.wordpress.org/Function_Reference/WP_Query#Methods">disponible como método de WP_Query</a>, es la función encargada de reiniciar el Loop de Wordpress para poder usarlo complementamente vacio despues de llamar a esta función. Ideal para el uso de varios Loops en una misma página.<h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2006/09/18/mejora-la-estetica-de-los-comentarios-de-tu-blog/" rel="bookmark" title="Permanent Link: Mejora la estética de los comentarios de tu blog">Mejora la estética de los comentarios de tu blog</a></li><li><a href="http://www.anieto2k.com/2007/03/05/attach-links-muestra-los-ficheros-asociados-a-cada-post/" rel="bookmark" title="Permanent Link: Attach Links, muestra los ficheros asociados a cada post">Attach Links, muestra los ficheros asociados a cada post</a></li><li><a href="http://www.anieto2k.com/2009/12/30/digging-into-wordpress-libro-disponible/" rel="bookmark" title="Permanent Link: Digging into Wordpress, libro disponible">Digging into Wordpress, libro disponible</a></li><li><a href="http://www.anieto2k.com/2009/03/24/posts-relacionados-sin-usar-plugin/" rel="bookmark" title="Permanent Link: Posts relacionados sin usar plugin">Posts relacionados sin usar plugin</a></li><li><a href="http://www.anieto2k.com/2006/09/14/mejorando-tus-asides/" rel="bookmark" title="Permanent Link: Mejorando tus asides (mini posts)">Mejorando tus asides (mini posts)</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/10/24/rewind_posts-reiniciando-nuestro-loop/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Permisos y capacidades en Wordpress</title>
		<link>http://www.anieto2k.com/2009/09/27/permisos-y-capacidades-en-wordpress/</link>
		<comments>http://www.anieto2k.com/2009/09/27/permisos-y-capacidades-en-wordpress/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 11:05:57 +0000</pubDate>
		<dc:creator>aNieto2k</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wordpress.hacks]]></category>

		<guid isPermaLink="false">http://www.anieto2k.com/?p=9004</guid>
		<description><![CDATA[Para que podamos administrar nuestro blog lo más correctamente posible, y que cada uno de los usuarios encaje en un rol y no pueda acceder a funcionalidades que no estén dentro de las capacidades permitidas para ese rol, Wordpress dispone de un sistema con el que manejar este control de permisos es posible.
1) Roles
Lo primero [...]]]></description>
			<content:encoded><![CDATA[Para que podamos administrar nuestro blog lo más correctamente posible, y que cada uno de los usuarios encaje en un rol y no pueda acceder a funcionalidades que no estén dentro de las capacidades permitidas para ese rol, <a href="http://codex.wordpress.org/Roles_and_Capabilities">Wordpress dispone de un sistema con el que manejar este control de permisos es posible</a>.
<h3>1) Roles</h3>
Lo primero que debemos saber es la cantidad de roles disponibles dentro de una instalación de Wordpress.
<ol>
	<li>Administrador</li>
	<li>Editor</li>
	<li>Autor</li>
	<li>Contribuidor</li>
	<li>Suscriptor</li>
</ol>
Estos 5 usuarios dividen una lista de 10 posibles niveles que podemos emplear como usuarios.


<h3>2) Niveles</h3>
Cada uno de los roles anteriores engloba uno o más niveles que le indican la capacidad de su usuario en un Wordpress. Estos niveles, que van de 0 a 10 definen lo que está accesible, o no, para cada usuario.
<h3>Suscriptor</h3>
<h4>Capacidades</h4>
Este usuario no contribuye con el blog en cuanto a contenido principal, aunque si contribuye con contenido indirecto en forma de comentarios.
<h4>Nivel 0</h4>
Un usuario con nivel 0, únicamente tendrá acceso a estas opciones en el menú de Wordpress.
<ul>
	<li>Dashboard</li>
	<li>Users
<ul>
	<li>Your Profile</li>
</ul>
</li>
</ul>
Es el mínimo nivel que un usuario registrado puede tener.
<h3>Contribuidor</h3>
<h4>Capacidades</h4>
Rol que permite que un usuario pueda escribir sus propios posts que se quedarán como borradores para que usuarios con más permisos los moderen. Por otro lado, este perfil permite editar/borrar su propios borradores y visualizar categorías, comentarios y el número de comentarios pendientes de moderar.
<h4>Nivel 0</h4>
<h4>Nivel 1</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post - Crear borradores</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts - Poder editar y borrar su propios borradores.</li>
	<li>Categories - Solo visualizar.</li>
	<li>Comments - Solo visualizar.</li>
	<li>Awaiting Moderation - Solo visualizar el número de comentarios pendientes de moderar.</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
</ul>
</li>
</ul>
<h3>Autor</h3>
<h4>Capacidades</h4>
Este rol permite que el usuario pueda crear/publicar/editar/borrar artículos, tanto pendientes como publicados. Además tiene la posibilidad de subir adjuntos a los artículos.

Como su nombre dice, únicamente pueden generar contenido y por ello no les está permitido moderar comentarios, categorías,...
<h4>Nivel 0</h4>
<h4>Nivel 1</h4>
<h4>Nivel 2</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts</li>
	<li>Categories - Solo visualizar</li>
	<li>Comments - Solo visualizar</li>
	<li>Awaiting Moderation - Solo ver el número de comentarios pendientes de comentar</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
</ul>
</li>
</ul>
<h3>Editor</h3>
<h4>Capacidades</h4>
Los editores ya disponen de más capacidades y están capacitados para administrar completamente las entradas suyas y las de otros usuarios, además de administrar la creación/modificación/publicación de páginas, categorías, comentarios, links,...
<h4>Nivel 0</h4>
<h4>Nivel 1</h4>
<h4>Nivel 2</h4>
<h4>Nivel 3</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts</li>
	<li>Categories - Solo visualización</li>
	<li>Comments - Solo visualización</li>
	<li>Awaiting Moderation - Solo visualización del número de comentarios pendientes.</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
</ul>
</li>
</ul>
<h4>Nivel 4</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts</li>
	<li>Categories - Añadir, editar y borrar</li>
	<li>Comments</li>
	<li>Awaiting Moderation - Permite moderar</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
</ul>
</li>
</ul>
<h4>Nivel 5</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post</li>
	<li>Write Page</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts - Permite editar fechas</li>
	<li>Pages - Solo las páginas escritas por él</li>
	<li>Categories</li>
	<li>Comments</li>
	<li>Awaiting Moderation</li>
</ul>
</li>
	<li>Links
<ul>
	<li>Manage Links - Solo puede editar y borrar sus propios links</li>
	<li>Add Links</li>
	<li>Link Categories - Añadir, editar y borrar cualquier link</li>
	<li>Import Links</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
	<li>Authors &amp; Users - Solo puede ver la información básica de todos los autores y puede moderar usuarios inferiores exepto usuario con nivel 0.</li>
</ul>
</li>
</ul>
<h4>Nivel 6</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post</li>
	<li>Write Page</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts</li>
	<li>Pages - Permite editar y borrar cualquier página de un usuario con menos nivel</li>
	<li>Categories</li>
	<li>Comments</li>
	<li>Awaiting Moderation</li>
</ul>
</li>
	<li>Links
<ul>
	<li>Manage Links - Puede editar y borrar links de usuarios con menos nivel</li>
	<li>Add Links</li>
	<li>Link Categories</li>
	<li>Import Links</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
	<li>Authors &amp; Users - Moderación de usuarios con menos nivel.</li>
</ul>
</li>
	<li>Options
<ul>
	<li>General</li>
	<li>Writing</li>
	<li>Reading</li>
	<li>Discussion</li>
	<li>Permalinks</li>
	<li>Miscellaneous</li>
</ul>
</li>
	<li>Upload</li>
</ul>
<h4>Nivel 7</h4>
<ul>
	<li>Dashboard</li>
	<li>Write
<ul>
	<li>Write Post</li>
	<li>Write Page</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts</li>
	<li>Pages - Puede editar y borrar de usuarios con menos nivel.</li>
	<li>Categories.</li>
	<li>Comments</li>
	<li>Awaiting Moderation</li>
</ul>
</li>
	<li>Links
<ul>
	<li>Manage Links - Puede administrar los links de usuarios con menos nivel.</li>
	<li>Add Links</li>
	<li>Link Categories</li>
	<li>Import Links</li>
</ul>
</li>
	<li>Presentation
<ul>
	<li>Themes</li>
	<li>Theme Editor</li>
</ul>
</li>
	<li>Plugins
<ul>
	<li>Plugins</li>
	<li>Plugin Editor</li>
</ul>
</li>
	<li>Users
<ul>
	<li>Your Profile</li>
	<li>Authors &amp; Users</li>
</ul>
</li>
	<li>Options
<ul>
	<li>General</li>
	<li>Writing</li>
	<li>Reading</li>
	<li>Discussion</li>
	<li>Permalinks</li>
	<li>Miscellaneous</li>
</ul>
</li>
	<li>Upload</li>
</ul>
<h3>Administrador</h3>
<h4>Capacidades</h4>
El administrador, además de todo lo que los usuarios anteriores pueden hacer este tiene la capacidad de administrar plugins, themes,... así como llevar un control completo sobre los usuarios que tienen un nivel inferior.
<h4>Nivel 0</h4>
<h4>Nivel 1</h4>
<h4>Nivel 2</h4>
<h4>Nivel 3</h4>
<h4>Nivel 4</h4>
<h4>Nivel 5</h4>
<h4>Nivel 6</h4>
<h4>Nivel 7</h4>
<h4>Nivel 8</h4>
<ul>
	<li>Write
<ul>
	<li>Write Post - Puede cambiar el autor de los posts.</li>
	<li>Write Page</li>
</ul>
</li>
	<li>Manage
<ul>
	<li>Posts</li>
	<li>Pages -  Puede editar y borrar páginas de usuarios con menos nivel.</li>
	<li>Categories.</li>
	<li>Comments</li>
	<li>Awaiting Moderation</li>
</ul>
</li>
	<li>Links
<ul>
	<li>Manage Links - Puede editar y borrar links de usuarios con menos nivel</li>
	<li>Add Links</li>
	<li>Link Categories</li>
	<li>Import Links</li>
</ul>
</li>
	<li>Presentation
<ul>
	<li>Themes</li>
	<li>Theme Editor</li>
</ul>
</li>
	<li>Plugins<span>
<ul>
	<li>Plugins</li>
	<li>Plugin Editor</li>
</ul>
</span></li>
	<li>Users
<ul>
	<li>Your Profile</li>
	<li>Authors &amp; Users - Puede ver información básica de todos los usuarios y editar los de menor nivel.</li>
</ul>
</li>
	<li>Options
<ul>
	<li>General</li>
	<li>Writing</li>
	<li>Reading</li>
	<li>Discussion</li>
	<li>Permalinks</li>
	<li>Miscellaneous</li>
</ul>
</li>
	<li>Upload</li>
</ul>
<h4>Nivel 9 y 10</h4>
Máximos control sobre todas las opciones del blog.
<h3>Usando esta información</h3>
Toda esta información, la podemos usar para <a href="http://www.anieto2k.com/2007/08/31/anadir-opciones-al-menu-administrador/">añadir menús al panel administrador de wordpress</a>.
<h3>Plugins</h3>
<ul>
	<li><a title="http://www.im-web-gefunden.de/wordpress-plugins/role-manager/" href="http://www.im-web-gefunden.de/wordpress-plugins/role-manager/">Role Manager Plugin for WordPress</a> (para WordPress 2.0 o superior)</li>
	<li><a title="http://agapetry.net/category/plugins/role-scoper/" href="http://agapetry.net/category/plugins/role-scoper/">Role Scoper Plugin</a> (para WordPress 2.5 o superior)</li>
	<li><a title="http://bueltge.de/wordpress-admin-theme-adminimize/674/" href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Adminimize Plugin</a></li>
</ul><h3>Artículos relacionados</h3>
<ul><li><a href="http://www.anieto2k.com/2007/09/14/subir-ficheros-con-wordpress-en-iis/" rel="bookmark" title="Permanent Link: Subir ficheros con Wordpress en IIS">Subir ficheros con Wordpress en IIS</a></li><li><a href="http://www.anieto2k.com/2008/08/26/%c2%bfla-lista-definitiva-para-los-usuarios-de-wordpress/" rel="bookmark" title="Permanent Link: ¿La lista definitiva para los usuarios de Wordpress?">¿La lista definitiva para los usuarios de Wordpress?</a></li><li><a href="http://www.anieto2k.com/2007/01/20/wp-manage-facilita-el-mantenimiento-de-tu-wordpress/" rel="bookmark" title="Permanent Link: WP-Manage, facilita el mantenimiento de tu Wordpress">WP-Manage, facilita el mantenimiento de tu Wordpress</a></li><li><a href="http://www.anieto2k.com/2006/03/14/role-manager-controla-a-tus-usuarios/" rel="bookmark" title="Permanent Link: Role Manager, controla a tus usuarios">Role Manager, controla a tus usuarios</a></li><li><a href="http://www.anieto2k.com/2006/11/24/5-plugins-para-wordpress-muy-interesantes/" rel="bookmark" title="Permanent Link: 5 plugins para Wordpress muy interesantes">5 plugins para Wordpress muy interesantes</a></li></ul><p><a href="http://www.anieto2k.com" id="38.107.191.105"><img rel="38.107.191.105" src="http://www.anieto2k.com/favicon.ico" alt="aNieto2k" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.anieto2k.com/2009/09/27/permisos-y-capacidades-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
