<?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>Frickr.es &#187; hack</title>
	<atom:link href="http://www.frickr.es/tags/hack/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.frickr.es</link>
	<description>Tecnología, desarrollo, economía y empresa.</description>
	<lastBuildDate>Wed, 27 Apr 2011 17: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>Cómo mostrar miniaturas en tu tema de WordPress sin plugins ni hacks</title>
		<link>http://www.frickr.es/2009/01/04/como-mostrar-miniaturas-en-tu-tema-de-wordpress-sin-plugins-ni-hacks/</link>
		<comments>http://www.frickr.es/2009/01/04/como-mostrar-miniaturas-en-tu-tema-de-wordpress-sin-plugins-ni-hacks/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 21:41:00 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[miniaturas]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[thumbnail]]></category>
		<category><![CDATA[timthumb]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.frickr.es/?p=127</guid>
		<description><![CDATA[El día de año nuevo cambié el tema del blog (una versión modificada de Redoable) por Arthemia 2 y descubrí que incluía el script timthumb.php para generar las miniaturas de las entradas en la portada, archivos y búsqueda, ¡qué bien!. Pero nada más activarlo y entrar en el blog propiamente dicho, las imágenes no se muestran&#8230; Voy a la documentación del tema y veo que hay que copiar la ruta de la imagen que quiero como miniatura en un campo personalizado de la entrada, con nombre &#8216;Image&#8217; y la URL ...]]></description>
			<content:encoded><![CDATA[<p>El día de año nuevo cambié el tema del blog (una versión modificada de Redoable) por <a href="http://michaelhutagalung.com/2008/08/arthemia-20-released-the-updates/">Arthemia 2</a> y descubrí que incluía el script <code>timthumb.php</code> para generar las miniaturas de las entradas en la portada, archivos y búsqueda, ¡qué bien!. Pero nada más activarlo y entrar en el blog propiamente dicho, las imágenes no se muestran&#8230; Voy a la documentación del tema y veo que hay que copiar la ruta de la imagen que quiero como miniatura en un campo personalizado de la entrada, con nombre &#8216;Image&#8217; y la URL relativa (esto es, <code>wp-content/uploads/año/mes/imagen.jpg</code>). Vaya rollazo, ¿no hay nada automático?.</p>
<blockquote><p><center>No me cuentes historias, <a href="http://www.frickr.es/2009/01/04/como-mostrar-miniaturas-en-tu-tema-de-wordpress-sin-plugins-ni-hacks/2/">show me the code!</a></center></p></blockquote>
<h3>Obtener los archivos adjuntos a una entrada</h3>
<p>Buscando por el <a href="http://codex.wordpress.org">Codex</a> de WordPress encontré algo que podía ser útil: la función <a href="http://codex.wordpress.org/Function_Reference/get_children">get_children()</a>. Por lo visto WordPress relaciona internamente cada fichero con su entrada correspondiente, y esta función devuelve todos los adjuntos que hemos subido mediante el <em>uploader</em> al escribir la entrada. Además permite filtrar el resultado por tipo (<code>attachment</code>), el identificador de la entrada (<code>post_id</code>) y el tipo MIME del archivo (<code>image</code>).</p>
<pre lang="php">$attachments =&#038; get_children( array(
	'post_type' => 'attachment',
	'post_parent' => get_the_ID(),
        'post_mime_type' => 'image'
));</pre>
<p>Tras varias pruebas -no todo sale siempre a la primera- compruebo que las todas miniaturas funcionan sin tener que usar los campos personalizados (que sinceramente, nunca me iba a molestar en rellenar) y me voy a la cama tan tranquilo. </p>
<h3>El desastre</h3>
<p>Al día siguiente&#8230; ¡horror!, el blog carga lentísimo y pocos minutos después recibo un mensaje del Hostmaster porque hay un proceso que está llamando continuamente a una IP caída (que resultó ser la de Twitter). Desactivo el plugin culpable -Twittwoo- e instalo <a href="http://ocaoimh.ie/wp-super-cache/">WP-Super-Cache</a> a petición del Hostmaster. Segundo horror: las miniaturas a tomar por saco. Borro la caché que había generado, desactivo y elimino todos los ficheros. Siguen sin aparecer las miniaturas y el Hostmaster me indica que desde el día de año nuevo a las 21:15h aparece este otro mensaje de error en los logs del servidor:</p>
<pre lang="text">[Thu Jan 01 21:15:04 2009] [error] [client 84.77.X.X] Usage: file [-bcikLhnNsvz] [-f namefile] [-F separator] [-m magicfiles] file..., referer: http://www.frickr.es/
[Thu Jan 01 21:15:04 2009] [error] [client 84.77.X.X]        file -C -m magicfiles, referer: http://www.frickr.es/</pre>
<p>Pues parece que <code>timthumb.php</code> hace una llamada a una función que calcula no-se-qué de un número mágico y falla o el servidor no la soporta. Y encima el WP-Super-Cache me ha modificado el <code>.htaccess</code>, pero por suerte el Hostmaster me sube uno limpio para WordPress. Resumiendo: que el dichoso <code>timthumb.php</code> en realidad nunca ha funcionado bien, y hay que encontrar otra solución.</p>
<p>Me pongo a buscar otra vez en el Codex y esta vez descubro que desde la versión 2.5 WordPress permite especificar tamaños para generar miniaturas de todas las imágenes que se suben. Perfecto: si nativamente el sistema genera las miniaturas, y yo puedo acceder a todos los adjuntos de un post, me falta relacionar el adjunto con la miniatura del tamaño que necesito. Sigo inspeccionando las funciones internas y me encuentro con <a href="http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src">wp_get_attachment_image_src()</a>, justo lo que necesito:</p>
<pre lang="php">(array) $image = function wp_get_attachment_image_src (
     $attachment_id,
     $size='thumbnail',
     $icon = false
);

// Returns an array containing:
$image[0] => url
$image[1] => width
$image[2] => height
</pre>
<p>Bueno, pues vamos a configurar WordPress y a modificar el código del tema (theme) para hacer que soporte las miniaturas internas de WordPress y eliminar cualquier rastro del <code>timthumb.php</code>.</p>
<blockquote><p><a href="http://www.frickr.es/2009/01/04/como-mostrar-miniaturas-en-tu-tema-de-wordpress-sin-plugins-ni-hacks/2/">Página 2 &raquo; Insertando el código final en el <em>theme</em></a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.frickr.es/2009/01/04/como-mostrar-miniaturas-en-tu-tema-de-wordpress-sin-plugins-ni-hacks/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.136 seconds -->

