RUDEWORKS / El blog-portfolio de RUDE

24/01Miniposts en el loop de WordPress (Parte II)

Miniposts en el Loop de WordPress Parte IIAnte 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 if (have_posts()) : ?> /* Iniciamos el loop */

        <?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 if (is_syndicated()) { ?> /* Vamos a diferenciar miniposts desde feeds y miniposts desde WordPress */

        <?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">&#x2192;</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:

printf(‘<div class="minipost twitter"><div class="entry"><p>’);

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.

$twitt = wptexturize($post->post_title);

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 = 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);

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.

echo $twitt;

Esta línea tan solo vuelca como texto todo lo que acabamos de procesar.

printf(’ <a href="’);
the_syndication_permalink();
printf(‘" title="Ir al post original">&#x2192;</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.

Posts relacionados:

10 comentarios >

  1. Qué arte! Sencillamente genial.

  2. Genial !, ya tenia ganas de que terminases el tutorial.

    Me estaba dando de ostias con ese tema y no conseguia hacerlo funcionar.

    1 Saludo

  3. Esta vez te lo has currado Rudecico! Será de lo primero que pruebe cuando me decida a publicar algo jej

  4. ¡Que arte con el código! A ver si lo integro en mi blog.

  5. Alguien tiene algún ejemplo para ver como queda¿?¿?¿

  6. En este mismo blog, si te aventuras a navegar, verás varios ejemplos @Albert.

Pingbacks >

  1. […] Actualización (24/01/2008): Ya está disponible la segunda parte del tutorial. […]

  2. […] Miniposts en el loop de Wordpress :: Esta entrada fue publicada el Jueves, 24 de Enero de 2008 a las 10:17 pm y está […]

  3. […] ya publico la parte dos del tutorial donde nos explica como integrar minipost desde otros feeds como twitter, o google reader, etc. […]

  4. […] que está de moda el tema de los miniposts… Encuentro ideas de cómo montarlos en el blog RudeWorks, que por cierto tiene muy buena […]