<?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>Berriart &#187; WordPress</title>
	<atom:link href="http://www.berriart.com/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.berriart.com</link>
	<description>Un programador hablando de diseño............</description>
	<lastBuildDate>Fri, 27 Jan 2012 08:53:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Profiling con WordPress y XHProf</title>
		<link>http://www.berriart.com/2012/01/13/profiling-wordpress/</link>
		<comments>http://www.berriart.com/2012/01/13/profiling-wordpress/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 08:22:17 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[profiling]]></category>
		<category><![CDATA[xhprof]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=891</guid>
		<description><![CDATA[A veces, y la mayoría por culpa de algún plugin peleón, he querido hacer profiling de alguna instalación de WordPress, para ello he utilizado XHProf (aunque empecé a intentarlo con XDebug). XHProf está desarrollado en un principio por Facebook y para Facebook, aunque en 2009 lo liberaron para que lo pudiéramos usar los demás. Por [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.berriart.com/wp-content/uploads/2012/01/xhprof-callgraph_small.png"><img src="http://www.berriart.com/wp-content/uploads/2012/01/xhprof-callgraph_small-150x150.png" alt="Imagen del Callgraph de XHProf" title="xhprof-callgraph_small" width="150" height="150" class="alignleft size-thumbnail wp-image-895" /></a>A veces, y la mayoría por culpa de algún <em>plugin</em> peleón, he querido hacer <a href="http://en.wikipedia.org/wiki/Profiling_%28computer_programming%29">profiling</a> de alguna instalación de WordPress, para ello he utilizado <a href="http://pecl.php.net/package/xhprof">XHProf</a> (aunque empecé a intentarlo con <a href="http://xdebug.org/">XDebug</a>). XHProf está desarrollado en un principio por Facebook y para Facebook, aunque en 2009 lo liberaron para que lo pudiéramos usar los demás. Por si no lo sabíais Facebook tiene una serie de <a href="http://developers.facebook.com/opensource/">herramientas propias liberadas</a>, muchas relacionadas lógicamente con PHP. </p>
<p>Con esta herramienta se pueden saber ciertos datos de la ejecución de una página, entre ellos:</p>
<ul>
<li>Listado y número de llamadas a una función/método</li>
<li>Tiempo de ejecución de una función/método</li>
<li>Tiempo de CPU de una función/método</li>
</ul>
<p>No voy a explicar aquí como instalar XHProf en vuestro servidor, lo que os voy a poner es un pequeño plugin que he desarrollado que habilita el profiling en WordPress cuando tienes <code>WP_DEBUG</code> activado y XHProf instalado. Lo he llamado <a href="http://www.berriart.com/en/wp-xhprof-profiler/">WP XHProf Profiler</a> como era de esperar :p</p>
<p>Enlace al plugin: <a href="http://www.berriart.com/en/wp-xhprof-profiler/">http://www.berriart.com/en/wp-xhprof-profiler/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2012/01/13/profiling-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plugin WP Karmacracy, integración en WordPress</title>
		<link>http://www.berriart.com/2011/06/24/plugin-wp-karmacracy-integracion-en-wordpress/</link>
		<comments>http://www.berriart.com/2011/06/24/plugin-wp-karmacracy-integracion-en-wordpress/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 15:50:28 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[acortador]]></category>
		<category><![CDATA[karmacracy]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[shortener]]></category>
		<category><![CDATA[URLs]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=804</guid>
		<description><![CDATA[Algunos igual ya os habéis enterado de que ayer publiqué un plugin para integrar WordPress con Karmacracy. No sé si lo conocéis, pero es un servicio para acortar URLs digamos&#8230; de nueva generación. Digo esto porque además de acortar URLs, es un sistema para conocer la influencia que tienen sus usuarios en las Redes Sociales [...]]]></description>
			<content:encoded><![CDATA[<p>Algunos igual <a href="http://twitter.com/#!/karmacracy/status/83870780219342848">ya os habéis enterado</a> de que ayer publiqué un plugin para integrar WordPress con <a href="http://karmacracy.com/">Karmacracy</a>. No sé si lo conocéis, pero es un servicio para acortar URLs digamos&#8230; de nueva generación. Digo esto porque además de acortar URLs, es un sistema para conocer la influencia que tienen sus usuarios en las Redes Sociales a traves de los enlaces que comparten.</p>
<p>Karmacracy ya era integrable en <a href="http://karmacracy.com/sections/resources/plugin/get-your-addon.php">varios clientes de Twitter, en móviles y existen plugins para varios navegadores</a>, pero yo echaba en falta la integración en mi CMS favorito, que como todo el que me lee sabe, es WordPress. Así que me puse manos a la obra, como siempre lo dejé a medias, y hace unos días lo retomé. Finalmente ha salido algo decente y ya lo tenéis disponible: <a href="http://www.berriart.com/en/wp-karmacracy/">WP Karmacracy</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2011/06/24/plugin-wp-karmacracy-integracion-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plugin de WP para forzar usuarios a loguearse para comentar</title>
		<link>http://www.berriart.com/2011/04/22/plugin-wp-forzar-usuarios-login-comentar/</link>
		<comments>http://www.berriart.com/2011/04/22/plugin-wp-forzar-usuarios-login-comentar/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 12:06:50 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[limitar]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=714</guid>
		<description><![CDATA[Acaba de empezar la Semana Santa, y ya que tengo las mañanitas libres, he decidido entre otras cosas dedicarle un poquito de tiempo al blog y hacerle unas remodelaciones. Una de las cosas que quiero hacer es darle una sección especial a los themes y plugins de WordPress que yo hago, pequeños cambios más que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.berriart.com/wp-content/uploads/2011/04/comment.png"><img src="http://www.berriart.com/wp-content/uploads/2011/04/comment-150x150.png" alt="Comment Privileges By Post" title="Comment Privileges By Post" width="150" height="150" class="alignleft size-thumbnail wp-image-716" /></a> Acaba de empezar la Semana Santa, y ya que tengo las mañanitas libres, he decidido entre otras cosas dedicarle un poquito de tiempo al blog y hacerle unas remodelaciones. Una de las cosas que quiero hacer es darle una sección especial a los themes y plugins de WordPress que yo hago, pequeños cambios más que nada.</p>
<p>El tema es que una de las cosas que voy a hacer, sí o sí, es forzar a los usuarios a registrarse para comentar en las páginas de los plugins y los themes. Por varias razones, una es para que el que quiera un poquito de soporte al menos necesite un poco de esfuerzo para pedirlo (registrarse), otra que así podré tener más datos de quienes usan mis themes/plugins y una manera de contactarles. Seguramente me ayude también a quitar un poco de SPAM.</p>
<p>Al ir a hacerlo me he dado cuenta de que no puedo limitar lo de comentar estando registrado en cada post o página, si no que solo puedo limitarlo en general para todo el blog. Así que ya puesto me he currado un pequeño plugin que permite hacerlo. Os presento el plugin para WordPress: <a href="http://www.berriart.com/en/comment-privileges-by-post/">Comment Privileges By Post</a>.</p>
<p>Espero que le resulte útil a alguien más que a mí.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2011/04/22/plugin-wp-forzar-usuarios-login-comentar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cómo un virus me ayudo a corregir un error</title>
		<link>http://www.berriart.com/2011/04/05/virus-ayudar-corregir-error/</link>
		<comments>http://www.berriart.com/2011/04/05/virus-ayudar-corregir-error/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 09:44:11 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Aplicaciones web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[adware]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[virus]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=694</guid>
		<description><![CDATA[Hace ya algún mesecito tuve una anécdota bastante curiosa que tenía ganas de compartir y no he podido hacerlo hasta ahora. Se trata de la historia de como un malware (adware) me ayudó a descubrir un error en una web que había desarrollado. La web estaba hecha con WordPress, pero necesitaba hacer una página nueva [...]]]></description>
			<content:encoded><![CDATA[<p>Hace ya algún mesecito tuve una anécdota bastante curiosa que tenía ganas de compartir y no he podido hacerlo hasta ahora. Se trata de la historia de como un <em><a href="http://es.wikipedia.org/wiki/Malware">malware</a> (adware)</em> me ayudó a descubrir un error en una web que había desarrollado.</p>
<p><img src="http://www.berriart.com/wp-content/uploads/2011/04/internet-security-bug-1.jpg" alt="imagen de virus" title="imagen de virus" width="124" height="124" class="alignleft size-full wp-image-698" />La web estaba hecha con WordPress, pero necesitaba hacer una página nueva fuera del core de WordPress que me permitiera utilizar las funciones de WordPress. No era algo muy difícil y además ya lo había hecho en otras ocasiones, incluso <a href="http://www.berriart.com/2009/02/11/usar-funciones-wordpress-externamente/">había escrito sobre ello en este mismo blog</a>.</p>
<p>La cuestión fue que el cliente al que le estuve haciendo la web me repetía que aunque el resto funcionaba bien él no podía ver esa página concreta en su ordenador de casa. Que lo había hecho en otros ordenadores y que iba bien, que su novía había probado en el curro y le iba bien, yo mismo probé en varios ordenadores y en todos me funcionaba correctamente, pero a él en su ordenador de casa no le funcionaba y le decía &#8216;página no encontrada&#8217;.</p>
<p>Por mi parte, al ver que solo le ocurría a él en su casa, llegué a la conclusión de que era problema de su ordenador y no de mi aplicación, que al resto del mundo le funcionaba bien. Le comenté que podría ser algún <em>virusillo</em> que le había afectado a su navegador, y como era consciente de que solo le pasaba a él pues lo aceptó.</p>
<p>Aún así, después de darle vueltas intentando imaginarme porque concretamente era solo con esa página, un día que fuí a su casa y pude verlo con mis propios ojos lo descubrí. Efectivamente él tenía un <em>adware</em> instalado en su navegador, era un típica barra de esas que se instala en el navegador, que además te cambia tu página de inicio y alguna otra cosa en el navegador para intentar colarte publicidad. Pero el verdadero problema no era eso, realmente eso fue el motivo del descubrimiento de que el que estaba haciendo mal las cosas era yo.</p>
<p>Cuando entramos a la página en cuestión nos salió una página 404 personalizada por el <em>adware</em> de su navegador y repletita de publicidad que me hizo ver el problema. ¿Porqué salía esa página? ¿Porque detectaba un error 404? Pues porque relamente la página que yo había creado tenía en sus cabeceras el error 404 y no estaba dando un &#8217;200 ok&#8217; como debería. Entonces el resto del mundo podía ver la página bien a pesar de estar dando un error 404 porque lo único que tenía mal son las cabeceras que la gente normal no suele mirar y a nivel visual estaba correctamente (como si sería una página de error 404 personalizada). En cambio el cliente con su virus, que le cambiaba las páginas 404 por una  con publicidad, no podía acceder. </p>
<p>Finalmente la solución fue fácil y solo hubo que forzar correctamente las cabeceras, si quieres ver el problema concreto y la solución puedes mirar el post de <a href="http://www.berriart.com/2009/02/11/usar-funciones-wordpress-externamente/">como usar funciones de WordPress externamente</a> porque ahí se explica mejor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2011/04/05/virus-ayudar-corregir-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revisión de &#8216;Meet Your Commenters&#8217;</title>
		<link>http://www.berriart.com/2010/06/28/revision-de-meet-your-commenters/</link>
		<comments>http://www.berriart.com/2010/06/28/revision-de-meet-your-commenters/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 17:06:25 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=542</guid>
		<description><![CDATA[Una de las tareas que me propuesto después de reabrir el blog es recuperar y actualizar esos proyectillos que tengo abiertos por ahí. Por ejemplo, y como en este caso, los plugins de wordpress que he hecho. Como primer candidato me ha parecido una buena opción el plugin hecho por mí que mejor valoración y [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las tareas que me propuesto después de reabrir el blog es recuperar y actualizar esos proyectillos que tengo abiertos por ahí. Por ejemplo, y como en este caso, los <a href="http://www.berriart.com/recursos/">plugins de wordpress</a> que he hecho. Como primer candidato me ha parecido una buena opción el plugin hecho por mí que mejor valoración y más descargas tiene: <a href="http://www.berriart.com/meet-your-commenters/">Meet Your Commenters</a>.</p>
<p>Para los que no conozcan, este plugin de wordpress muestra en el <em>dashboard</em> los perfiles en redes sociales de la gente que comenta en  tu blog, y también muestra sus blogs o webs; para lograrlo hace uso de la Social Graph API de Google. Creo que el plugin es una buena manera de poder acercarte más a tus lectores y la verdad es que todavía me siguen llegando <em>trackbacks</em> de gente que lo recomienda como uno de los mejores plugins sociales para WordPress.</p>
<p>Los cambios que he realizado:</p>
<ul>
<li>Comprobar compatibilidad con WP 3.0</li>
<li>Cambiar licencia de GPL a GPL2</li>
<li>Empezar a usar la clase SimplePie_File del core de WordPress para acceder a la API y así evitar las limitaciones de acceso a webs externas de ciertos hostings</li>
<li>Permitir internacionalización y añadir castellano como idioma adicional</li>
<li>Eliminar algunos <em>warnings</em></li>
<li>Arreglarlo para permitir la instalación automática desde el administrador de WP por FTP como el resto de plugins</li>
</ul>
<p>Si nunca lo habéis probado, este es un buen momento <img src='http://www.berriart.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>El plugin en el directorio oficial de WordPress:<br />
<a href="http://wordpress.org/extend/plugins/meet-your-commenters/">http://wordpress.org/extend/plugins/meet-your-commenters/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2010/06/28/revision-de-meet-your-commenters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hook al activar o desacivar un plugin de WordPress</title>
		<link>http://www.berriart.com/2009/05/06/hook-activar-desactivar-plugin/</link>
		<comments>http://www.berriart.com/2009/05/06/hook-activar-desactivar-plugin/#comments</comments>
		<pubDate>Tue, 05 May 2009 22:49:47 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[activar]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[plugins de wordpress]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=473</guid>
		<description><![CDATA[Si eres desarrollador de plugins de WordPress, te habrá pasado alguna vez que has querido que se ejecute alguna acción cuando un usuario instala uno de tus plugins o cuando lo desinstala. Un ejemplo claro es que tu plugin necesite una tabla de base de datos adicional, y necesite que ésta se cree al activar [...]]]></description>
			<content:encoded><![CDATA[<p>Si eres desarrollador de plugins de WordPress, te habrá pasado alguna vez que has querido que se ejecute alguna acción cuando un usuario instala uno de tus plugins o cuando lo desinstala. Un ejemplo claro es que tu plugin necesite una tabla de base de datos adicional, y necesite que ésta se cree al activar el plugin. Al igual que al desinstalar el plugin podría ser que esa tabla ya no sirva y quieras que se borre.</p>
<p>Para ello WordPress nos ofrece dos funciones que nos permitirán que se ejecute algo al activar o desactivar un plugin, estas funciones son <em>register_activation_hook</em> y <em>register_deactivation_hook</em>. Se puede ver su modo de empleo en las siguientes líneas de código que simulan la situación que he expuesto antes:</p>
<pre name="code" class="php">&lt;?php

register_activation_hook( __FILE__, 'plugin_name_activate' );
register_deactivation_hook( __FILE__, 'plugin_name_deactivate' );

function plugin_name_activate() {
	global $wpdb;
	$sql = 'CREATE TABLE `' . $wpdb->prefix . 'plugin_name`
		( `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
		`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
		`otro` VARCHAR( 255 ) NOT NULL )
	';
	$wpdb->query($sql);

}

function plugin_name_deactivate() {
	global $wpdb;
	$sql = 'DROP TABLE `' . $wpdb->prefix . 'plugin_name`';
	$wpdb->query($sql);

}

?&gt;</pre>
<p>A mi me han sido de utilidad en más de una ocasión, ya me contaréis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2009/05/06/hook-activar-desactivar-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Usar funciones de WordPress externamente</title>
		<link>http://www.berriart.com/2009/02/11/usar-funciones-wordpress-externamente/</link>
		<comments>http://www.berriart.com/2009/02/11/usar-funciones-wordpress-externamente/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 23:47:57 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[funciones]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=416</guid>
		<description><![CDATA[En algún momento dado, tal vez hayáis querido crear una página para vuestro blog fuera de wordpress, pero pudiendo utilizar todas las funciones y funcionalidades del wordpress. Un ejemplo de ello podría ser crear un cron para que publique ciertos posts recogidos de un feed, o de una base de datos externa. Hacerlo es bastante [...]]]></description>
			<content:encoded><![CDATA[<p>En algún momento dado, tal vez hayáis querido crear una página para vuestro blog fuera de wordpress, pero pudiendo utilizar todas las funciones y funcionalidades del wordpress. Un ejemplo de ello podría ser crear un cron para que publique ciertos posts recogidos de un feed, o de una base de datos externa.</p>
<p>Hacerlo es bastante sencillo, solo tendréis que escribir las siguientes líneas al comienzo del script:</p>
<pre name="code" class="php">
&lt;?php
// A menos que vayas a usar el sistema de themes de wordpress
// debes definir WP_USE_THEMES antes de hacer el require
define('WP_USE_THEMES', false);	

// Al incluir este archivo, creamos la conexión a la BD
// y podremos hacer uso de las funciones
require('/ruta-al-directorio-del-wordpress/wp-blog-header.php');  

?&gt;
</pre>
<p>Hay que tener en cuenta que si vas a utlizarlo por consola o utilizando un cron, Apache no mandará las variables de servidor, así que seguramente tengas que forzarlas tú mismo antes de hacer el &#8216;require&#8217;, si usas WordPress MU tendrás que hacerlo sí o sí. Ej:</p>
<pre>$_SERVER['HTTP_HOST'] = 'www.berriart.com';
$_SERVER['REQUEST_URI'] = '/';</pre>
<p>Puede que algunas funciones no estén disponibles porque necesiten de algún archivo que no se incluya de manera normal en el WordPress. Por ejemplo si se quiere usar &#8216;fetch_rss&#8217; para parsear feeds, seguramente tengamos que incluir el archivo &#8216;rss.php&#8217; de la carpeta &#8216;wp-includes&#8217; porque éste solo se incluye por defecto en algunas páginas del administrador.</p>
<pre>include_once(ABSPATH . WPINC . '/rss.php');</pre>
<h3>Actualización:</h3>
<p>Después de un tiempo me he dado cuenta de que esto solo no es suficiente. Ya que wordpress al no reconocer que tipo de página es esa que has creado (si es un post, o una página, o una búsqueda,&#8230;) enviará un error 404. Es decir, visualmente la página funcionará correctamente, pero si compruebas las cabeceras de la web verás que devuelven un error 404. Además, como visualmente no notas nada, lo más probable es que si lo hicieras así ni siquiera te des cuenta de que está mal. Eso sí, te podrías volver loco intentando que Google rastreara tu página. Para solucionar ese problema solo tendrás que agregar además de lo indicado arriba las siguientes líneas que cambiarán las cabeceras (escribir esto antes de cualquier salida de texto al navegador):</p>
<p><code>header("HTTP/1.1 200 OK"); </code><br />
<code>header("Status: 200 All rosy");</code></p>
<p>Si quieres ver como un virus me ayudó a encontrar este problema puedes ver <a href="http://www.berriart.com/2011/04/05/virus-ayudar-corregir-error/">este post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2009/02/11/usar-funciones-wordpress-externamente/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Crear un widget para el administrador de WordPress</title>
		<link>http://www.berriart.com/2009/02/01/crear-widget-administrador-wordpress/</link>
		<comments>http://www.berriart.com/2009/02/01/crear-widget-administrador-wordpress/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 20:13:55 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=406</guid>
		<description><![CDATA[Hace poco he actualizado los dos widgets para el panel de administración -o dashboard- de WordPress que he creado (Meet your commenters y Berri Technorati Reactions on Dashboard), y lo he hecho más que nada porque la forma de añadir estos widgets cambió en WordPress 2.7 y el método que usaba yo ya no valía. [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco he actualizado los dos widgets para el panel de administración -o <em>dashboard</em>- de WordPress que he creado (<a href="http://www.berriart.com/meet-your-commenters/">Meet your commenters</a> y <a href="http://www.berriart.com/technorati-reactions-dashboard-plugin/">Berri Technorati Reactions on Dashboard</a>), y lo he hecho más que nada porque la forma de añadir estos widgets cambió en WordPress 2.7 y el método que usaba yo ya no valía. Así que aprovecho y os cuento como se hace.</p>
<p>Realmente esos widgets, al igual que los de las barras laterales, son plugins de wordpress  por lo tanto lo que tenemos que hacer es un plugin que luego subiremos a su correspondiente carpeta y activaremos en el panel de administración. Además, podremos activar, desactivar o mover ese panel que crearemos para el dashboard, tal como se puede hacer con los que vienen por defecto. Nada mejor que un ejemplo y un poco de código para explicar como hacerlo:</p>
<pre name="code" class="php">
&lt;?php
/*

Plugin Name: Sample Dashboard Widget

Plugin URI: http://www.berriart.com/

Description: Sample code for creating a dashboard widget 

Author: Alberto Varela

Version: 1.0

Author URI: http://www.berriart.com
*/

// Función para mostrar el contenido del widget
function sampledashboardwidget_main_function() {
	echo "Hello World";
}

// Utilizamos la función wp_add_dashboard_widget para añadir el
// widget al panel
function sampledashboardwidget_register_dashboard_widget() {
	wp_add_dashboard_widget('sampledashboardwidget', // ID único del widget
	'Sample Dashboard Widget', // Título para el widget
	'sampledashboardwidget_main_function', // Función principal del wiget
	'sampledashboardwidget_setup');	// Este último parámetro es opcional y solo lo usaremos
					// en caso de necesitar una página de opciones, en ese
					// caso pondremos la función que corresponda
}

// Añadir finalmente el widget mediante el sistema 'hooks' de WordPress
add_action('wp_dashboard_setup', 'sampledashboardwidget_register_dashboard_widget');

// Si se quiere hacer por ejemplo una página de administración, al estilo del widget 'stats',
// podemos añadirla mediante el cuarto parametro de la función 'wp_add_dashboard_widget'
function sampledashboardwidget_setup() {
	if( isset($_POST['sdw_option']) ) do_something();
	echo '&lt;form&gt;&lt;input type="text" name="sdw_option" /&gt;&lt;input type="submit" /&gt;&lt;/form&gt;';
}

?&gt;
</pre>
<p>Creo que no hace falta dar muchas más explicaciones y con esto como inicio cualquiera que se anime y tenga una idea puede crear un nuevo widget para el dashboard. Por cierto, yo no sabía que se podía agregar una página de opciones al widget, pero <a href="http://rick.jinlabs.com/2009/02/01/how-add-options-to-your-wordpress-27-dashboard-widgets/">el otro día Rick me iluminó</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2009/02/01/crear-widget-administrador-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Otro widget compatible con WordPress 2.7</title>
		<link>http://www.berriart.com/2009/01/30/otro-widget-compatible-con-wordpress-27/</link>
		<comments>http://www.berriart.com/2009/01/30/otro-widget-compatible-con-wordpress-27/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 00:25:45 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[incoming links]]></category>
		<category><![CDATA[technorati]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[wordpress 2.7]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=404</guid>
		<description><![CDATA[Siguiendo con lo prometido, voy actualizando mis plugins y adecuándolos al nuevo WordPress 2.7. La siguiente víctima ha sido el widget Berri Technorati Reactions on Dashboard -menudo nombre largo que le puse- que ahora ya se puede usar sin problemas en WordPress 2.7. Le he agregado el texto con el que nos enlazan, los favicons [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con <a href="http://www.berriart.com/2008/12/31/mis-objetivos-para-el-2009/">lo prometido</a>, voy actualizando mis plugins y adecuándolos al nuevo WordPress 2.7. La siguiente víctima ha sido el widget <a href="http://www.berriart.com/technorati-reactions-dashboard-plugin/">Berri Technorati Reactions on Dashboard</a> -menudo nombre largo que le puse- que ahora ya se puede usar sin problemas en WordPress 2.7. Le he agregado el texto con el que nos enlazan, los favicons de los blogs y el total de &#8216;blog reactions&#8217; que tenemos. Tres tonterías, pero ya que estaba y como no me constaba mucho, se lo he puesto.</p>
<p><img style="margin:auto;display:block;" src="http://www.berriart.com/imagenes/berri-technorati-reactions.png" alt="Screenshot" /></p>
<p>Así es como quedará en el panel de tu WordPress y podrás ver quienes son los últimos que te han enlazado. Como ya dije en su día, prefiero las &#8216;technorati reactions&#8217; a los &#8216;incoming links&#8217; de Google que vienen por defecto desde la versión 2.3, hay muchos enlaces que Google no ve o no muestra.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2009/01/30/otro-widget-compatible-con-wordpress-27/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Incluir en tu wordpress los últimos artículos de otro blog o feed</title>
		<link>http://www.berriart.com/2009/01/27/incluir-wordpress-ultimos-articulos-blog-feed/</link>
		<comments>http://www.berriart.com/2009/01/27/incluir-wordpress-ultimos-articulos-blog-feed/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 00:36:16 +0000</pubDate>
		<dc:creator>artberri</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.berriart.com/?p=385</guid>
		<description><![CDATA[Sino soléis pasaros por la portada, algo que suele ser habitual entre los lectores asiduos, no os habréis fijado en que ahora muestro los últimos posts que he escrito en el blog coporatvo de la empresa en la que trabajo. Es algo bastante normal cuando se escribe en diferentes sitios y se tratan temas parecidos. [...]]]></description>
			<content:encoded><![CDATA[<p>Sino soléis pasaros por la portada, algo que suele ser habitual entre los lectores asiduos, no os habréis fijado en que ahora muestro los últimos posts que he escrito en el <a href="http://blogs.alianzo.com/redessociales/">blog coporatvo de la empresa en la que trabajo</a>. Es algo bastante normal cuando se escribe en diferentes sitios y se tratan temas parecidos. Yo lo muestro en la parte inferior de la portada pero se podría mostrar en cualquier otro lado, por ejemplo en el <em>sidebar</em>.</p>
<p><img src="http://www.berriart.com/wp-content/uploads/2009/01/redes-sociales.png" alt="redes-sociales" title="redes-sociales" width="414" height="142" style="padding:3px;border:1px solid #ccc;display:block;margin:auto;" /></p>
<p>Para hacerlo solo hay que modificar la plantilla del blog dónde queramos que aparezca. En mi caso ha sido en <em>index.php</em>, pero podrías hacerlo tambien <em>sidebar.php</em>, etc&#8230; Y haciendo uso de algunas funciones de WordPress podemos incorporarlo con sólo poner las siguientes dos líneas de código dónde queramos que aparezca:</p>
<pre name="code" class="php">
&lt;?php
include_once(ABSPATH . WPINC . '/rss.php');
wp_rss('http://www.berriart.com/feed/', 5);
?&gt;
</pre>
<p>Con la primera línea incluímos la librería para manejar feeds que trae WordPress, y con la segunda le decimos de que feed queremos extraer los últimos posts. De esta manera generaremos una lista con los títulos a los últimos 5 posts del feed elegido y su correspondiente enlace.</p>
<p>Esta es la manera más sencilla, pero aunque podemos personalizar el estilo mediante CSS no te permite modificar el HTML que genera. Por eso yo he elegido una opción un pelín más elaborada pero que permite modificar el HTML generado y los elementos que queremos mostrar. Aún así, también hacemos uso de la misma librería.</p>
<pre name="code" class="php">
&lt;h2&gt;&lt;?php
include_once(ABSPATH . WPINC . '/rss.php');
$rss = fetch_rss('http://www.berriart.com/feed/');
$maxitems = 5;
$items = array_slice($rss-&gt;items, 0, $maxitems);
?&gt;

&lt;ul&gt;
&lt;?php if (!empty($items))
foreach ( $items as $item ) : ?&gt;
&lt;li&gt;
    &lt;h4&gt;&lt;a href='&lt;?php echo $item['link']; ?&gt;' title='&lt;?php echo $item['title']; ?&gt;'&gt;&lt;?php echo $item['title']; &gt;&lt;/a&gt;&lt;/h4&gt;
    &lt;p&gt;&lt;?php echo $item['description']; ?&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;?php endforeach; ?&gt;
&lt;/ul&gt;
</pre>
<p>En este caso de ejemplo también se ha optado por mostrarlo con una lista, pero se puede ver como podemos personalizarlo totalmente, HTML incluido. Además se puede mostrar otra información que nos dé el feed aparte del título y el enlace, por ejemplo la descripción, la fecha, el autor,&#8230;</p>
<p>Aprovecho para comentar que si alguien quiere saber lo que cuento sobre redes sociales, puede hacerlo siguiendo el blog <a href="http://blogs.alianzo.com/redessociales/">Redes Sociales</a>, o <a href="http://blogs.alianzo.com/redessociales/author/avarela/">mis posts en ese blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berriart.com/2009/01/27/incluir-wordpress-ultimos-articulos-blog-feed/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

