Ante todo y sobre todo, mil discuplas por tardar más de dos meses en poner la segunda parte de este tutorial, pero necesitaba preparación mental, porque es una segunda parte con mucha chicha y espero que se vea recompensada con un montonaco de pingbacks (es coña).
Esta vez, vamos a generar miniposts a partir de nuestro Twitter (o cualquier otro feed externo). Para empezar, lo mejor será que os releáis la primera parte del tutorial, porque el principio es el mismo.
FeedWordPress
Para generar miniposts a partir de feeds es necesario (esta vez sí) un plugin que nos haga parte del trabajo. Yo utilizo FeedWordPress que me parece estupendo y tiene todo lo que le pido.
Una vez descargado y descomprimido observareis que dentro hay una carpeta llamada MagpieRSS-upgrade, es absolutamente necesario que copiéis los dos archivos que vienen dentro en la carpeta wp-includes de vuestra instalación de WordPress (sobreescribid los ya existentes). Si no lo hacéis es bastante probable que veáis cosas muy extrañas en los títulos de los miniposts.
Una vez instalado tendremos una nueva pestaña en nuestro panel de WP llamada Syndication, para añadir vuestros feeds teneis el campo Add a new syndicated site:. Es realmente sencillo, pero antes veamos las opciones que nos da FeedWordPress bajo la pestaña Syndication > Options. Como una imagen vale más que mil palabras, esta es la configuración que yo utilizo y considero idónea.
Más tarde podremos configurar estas mismas opciones según el feed, así que no os asustéis.
Miniposts desde Twitter
Al tema, tenemos una cuenta de Twitter y queremos utilizar nuestros tweets como miniposts en nuestro blog, ¿cómo se hace eso? Lo primero es conseguir la dirección del feed de nuestra cuenta de Twiiter. Bajo vuestros tweets en vuestra home (http://twitter.com/vuestro_nombre_de_usuario) encontraréis un enlace grandote al RSS, tiene esta estructura:
http://twitter.com/statuses/user_timeline/xxxxxxx.rss
Copiáis dicho enlace y volvéis a la pestaña Syndication en WP y nos dirijimos al campo Add a new syndicated site:, tras pegar el URL de nuestro feed, se nos confirmará si ha habido algún error, o en caso contrario, cuantos posts se han importado, por eso los manteníamos en privado en las opciones.
Ahora ya podemos editar las opciones del feed concreto (clicando sobre Editar). De nuevo, una imagen me ahorra palabras.
El layout del minipost
Esto es lo chungo, vamos a editar nuestro index.php, por si no os acordábais, nuestro loop nos había quedado de la siguiente manera:
<?php while (have_posts()) : the_post(); ?>
<?php if (in_category(‘12’)) { ?> /* Preguntamos a qué categoría pertenece el post, en este caso el ID de la categoría Miniposts es 12 */
/* Aquí el layout de los miniposts */
<?php } else { ?> /* Si pertenece a cualquier otra categoría */
/* Aquí el layout de los posts normales */
<?php } ?>
<?php endwhile; ?>
/* Aquí va la navegación, como siempre */
<?php endif; ?> /* Cerramos el loop */
Y el layout será el siguiente (lo vuelco al completo y luego lo despiezo):
<?php
printf(‘<div class="minipost twitter"><div class="entry"><p>’);
$twitt = wptexturize($post->post_title);
$twitt = str_replace(‘RUDE: ‘,”,$twitt);
$twitt = ereg_replace("(^| )(http:\/\/([.]?[a-zA-Z0-9_/-])*)", "\1<a href=\"\2\">\2</a>", $twitt);
$twitt = ereg_replace("(^| )(@)(([.]?[a-zA-Z0-9_/-])*)", "\1<a href=\"http://twitter.com/\3\">\2\3</a>", $twitt);
echo $twitt;
printf(’ <a href="’);
the_syndication_permalink();
printf(‘" title="Ir al post original">→</a>’);
printf(‘</p></div></div>’);
<?php } else { ?>
/* Aquí va el layout de los miniposts de la primera parte del tutorial :-D */
<?php } ?>
Vamos a explicar qué es cada cosa:
La primera línea simplemente inicia la estructura HTML del bloque. Si os fijáis, hemos dado la clase “twitter” al div contenedor para poder diferenciarlo gráficamente de los demás miniposts.
En la segunda declaramos la variable $twitt, que se convertirá en el bloque de texto de nuestro minipost, como los posts de Twitter llegan como títulos, no hace falta más que renderizar esa parte del feed.
$twitt = ereg_replace("(^| )(http:\/\/([.]?[a-zA-Z0-9_/-])*)", "\1<a href=\"\2\">\2</a>", $twitt);
$twitt = ereg_replace("(^| )(@)(([.]?[a-zA-Z0-9_/-])*)", "\1<a href=\"http://twitter.com/\3\">\2\3</a>", $twitt);
Esta es la parte divertida, Twitter nos envía los feeds con nuestro nombre de usuario al comienzo, en la primera línea del código básicamente le decimos que nuestro nombre de usuario más los dos puntos que le sigan, sean reemplazados por nada, un vacío.
Otra putada de los feeds de Twitter es que las URL no vienen realmente enlazadas, sólo vienen como texto, la segunda línea se encarga de convertirlos en links.
Lo mismo ocurre con los nombres de usuario, Twitter enlaza automáticamente los nombres de usuario a su cuenta correspondiente, cosa que no ocurre en los feeds, la tercera línea se encarga de hacer el trabajo.
Esta línea tan solo vuelca como texto todo lo que acabamos de procesar.
the_syndication_permalink();
printf(‘" title="Ir al post original">→</a>’);
printf(‘</p></div></div>’);
Y finalmente hacemos un enlace al post original en Twitter y cerramos la estructura.
Al guardar el index.php y aprobar los posts previamente importados de Twitter todo debería ser maravilloso (suponiendo que ya le hayáis dado forma con CSS).
Imagino que ahora mismo todos estaréis sufriendo derrames cerebrales, así que cuando os recuperéis podéis dejarme vuestras dudas y sugerencias en los comentarios.
24/08 - 23:28
Qué arte! Sencillamente genial.
25/08 - 9:59
Genial !, ya tenia ganas de que terminases el tutorial.
Me estaba dando de ostias con ese tema y no conseguia hacerlo funcionar.
1 Saludo
25/08 - 10:20
Esta vez te lo has currado Rudecico! Será de lo primero que pruebe cuando me decida a publicar algo jej
26/08 - 21:14
¡Que arte con el código! A ver si lo integro en mi blog.
03/08 - 9:31
Alguien tiene algún ejemplo para ver como queda¿?¿?¿
03/08 - 10:13
En este mismo blog, si te aventuras a navegar, verás varios ejemplos @Albert.