Hackear un feed de enlaces contribuido por el usuario con comentarios de WordPress

Aunque WordPress tiene una * muy * extensa colección de plug-in, de vez en cuando surgen cosas para las cuales no hay plug-ins adecuados disponibles (todavía). Cuando construí PSDTUTS pensé que sería genial tener una forma para que los usuarios envíen enlaces y creen un enlace público a partir de ellos. Hoy te mostraré cómo pirateé un método usando los comentarios de WordPress.

Entonces, primero que todo, si no está seguro de lo que quiero decir con un feed de enlace contribuido por el usuario, todo lo que necesita hacer es mirar en la barra lateral de NETTUTS y verá nuestro feed de enlace público. Puede suscribirse a través de RSS o hacer clic para enviar sus propios enlaces. Es una buena manera de obtener más interactividad en el sitio y permitir que los lectores aprovechen el tráfico de los sitios TUTS para volver a sus propios blogs y tutoriales..

Áspero plan de acción

Lo primero que debe hacer es idear un plan de cómo todo va a funcionar. Aquí está nuestro plan:

  1. Primero, crearemos una publicación especial en nuestro blog que solo tendrá algunas instrucciones de envío breves.
  2. Luego, editaremos el archivo comments.php para que cuando aparezca esta publicación especial, muestre los comentarios de manera diferente.
  3. En esos comentarios, cambiaremos el formulario de comentarios regulares para volver a marcarlos de modo que los campos se ajusten a un envío de enlace
  4. Luego, cambiaremos la forma en que se muestran los comentarios tanto en la publicación como en los comentarios RSS para que tenga sentido.
  5. Finalmente haremos un poco de código para extraer los últimos 10 enlaces y colocarlos en la barra lateral

Ahora, la ventaja de usar el sistema de comentarios de WordPress es que ya existe un flujo de trabajo de aprobación y captura de spam..

Paso 1 - Crear la publicación

Para mi ejemplo de hoy, voy a utilizar el sitio de AUDIOTUTS que se lanzará pronto y que he pasado toda la tarde juntos. Así que solo hacemos una publicación regular con un título y un texto, me puedes ver haciendo la mía en la captura de pantalla:

Y aquí está en el sitio de AUDIOTUTS:

Ahora es importante averiguar qué es la ID de publicación para nuestra publicación. Puede resolver esto editando la publicación que acaba de crear y mirando la URL de la página de edición de publicaciones. La URL de mi publicación de edición es "http://audiotuts.com/wp-admin/post.php?action=edit&post=3", por lo tanto, la ID de la publicación es 3!

Paso 2 - Editar Comentarios.php

A continuación, vamos a modificar nuestro archivo comments.php para buscar la publicación con ID de 3 y hacer que los comentarios de esa publicación en particular se vean diferentes. Tenga en cuenta que si está interesado en obtener más información sobre el archivo comments.php, tenemos un excelente tutorial aquí en NETTUTS llamado Desentrañar los secretos de Comments.php, que es un excelente lugar para comenzar..

Básicamente, vamos a agregar una gran declaración if y si el ID de publicación no es 3, haremos lo que nos corresponda con los comentarios, y si es 3, cambiaremos la forma en que se muestran Y la apariencia del formulario. . Aquí está mi archivo comments.php para AUDIOTUTS (tenga en cuenta que he comentado las cosas de los comentarios regulares para que sea más claro en lo que respecta al feed del enlace)

 ID! = 3) // Si la ID de la publicación es * NO * igual a 3 (la publicación de nuestro enlace que creamos anteriormente) entonces // ejecutamos el material de comments.php regular en este espacio. // // He eliminado el mío para que mi fragmento de código sea un poco más claro else ?> 

Envíos de usuarios anteriores

Enviar un enlace

Enviar un enlace

CARNÉ DE IDENTIDAD); ?>

Así que analicemos nuestro código en dos partes, primero el formulario y luego la pantalla de comentarios.

Paso 3 - Modificando el formulario de comentarios

Por defecto, hay cuatro campos de formulario que WordPress usa para permitir la entrada de comentarios, que son:

  1. Autor
  2. Email
  3. URL
  4. Comentario

Para recibir un enlace de enlace necesitamos tres cosas:

  1. Título del enlace
  2. URL
  3. direccion de enlace en la descripcion

Así que asignaremos los cuatro campos de formulario a nuestros tres requisitos como este:

  1. Campo de autor> Título del enlace
  2. URL> URL
  3. Comentario> Enlace Descripción

Y para el campo de correo electrónico, lo cambiaremos a un campo de formulario oculto y le daremos un valor de "[email protected]", que hará que los enlaces sean mucho más fáciles de detectar cuando se aprueben en la aprobación de los comentarios..

Así que aquí está el formulario que estoy usando:

 

CARNÉ DE IDENTIDAD); ?>

Como puedes ver tenemos tres campos y uno para la dirección de correo electrónico. Y aunque en el HTML estos campos de entrada todavía tienen sus ID habituales (autor, url, comentario), puede ver en el texto que el usuario ve que están etiquetados como título del enlace, URL y descripción del enlace. Para que la forma se vea así:

Paso 4 - Visualización de envíos de enlaces anteriores

A continuación, formatearemos cómo aparecen los comentarios anteriores para que también hagan uso de nuestros campos de autoría, URL y comentarios. Aquí está el código que usaremos para mostrar los enlaces:

  

Así que aquí está lo que estamos haciendo.

  1. Primero comprobamos si hay algún comentario.
  2. Si los hay, generaremos una lista ordenada.
      de entradas
    1. Para cada comentario publicamos un
    2. elemento con:
      1. Un nombre de autor vinculado: recuerde que hemos utilizado estos campos para que este sea el título del enlace vinculado a la URL
      2. El texto del comentario, o en otras palabras, nuestra descripción del enlace..

    Paso 5 - Actualizando los comentarios RSS

    Ahora, lo mejor de usar comentarios es que, de forma predeterminada, hay una fuente RSS para cada publicación de WordPress. La URL es simplemente la dirección de la publicación seguida de '/ feed'. Así que en nuestro caso es: http://audiotuts.com/general/user-link-feed/feed/

    El único problema es que, de forma predeterminada, el formato de los comentarios RSS creará un feed similar a este (en Safari):

    Entonces hay tres problemas:

    1. El título del feed es "Comentarios en: Feed del enlace del usuario"
    2. El título del enlace dice "Por: ..."
    3. El enlace no va a la URL, vuelve a AUDIOTUTS.

    Así que para resolver estos problemas tenemos que editar la plantilla de feed. Así que entramos en nuestra instalación de WordPress para /wp-includes/feed-rss2-comments.php, que es el archivo de plantilla para los comentarios RSS. Esto es lo que el archivo tiene en él por defecto (en WordPress 2.5.1):

     '; ?>   <?php if ( is_singular() ) printf(__('Comments on: %s'), get_the_title_rss()); elseif ( is_search() ) printf(__('Comments for %s searching on %s'), get_bloginfo_rss( 'name' ), attribute_escape($wp_query->query_vars ['s'])); else printf (__ ('Comentarios para% s'), get_bloginfo_rss ('nombre'). get_wp_title_rss ()); ?>       comment_post_ID); get_post_custom ($ comment_post-> ID); ?>  <?php if ( !is_singular() )  $title = get_the_title($comment_post->CARNÉ DE IDENTIDAD); $ title = apply_filters ('the_title_rss', $ title); printf (__ ('Comentar en% 1 $ s por% 2 $ s'), $ title, get_comment_author_rss ());  else printf (__ ('By:% s'), get_comment_author_rss ()); ?>     post_password) && $ _COOKIE ['wp-postpass']! = $ comment_post-> post_password):?>      comment_ID, $ comment_post-> ID); ?>    

    Ahora realmente no necesitamos saber qué hace la mayoría de eso, sino que simplemente analizaremos y cambiaremos algunas líneas. La primera línea que podemos arreglar es la línea 18, que cambiamos de esto:

    printf (__ ('Comentarios en:% s'), get_the_title_rss ());

    a esto:

    printf (__ ('% s'), get_the_title_rss ());

    Luego cambiaremos la línea 42 de esto:

    printf (__ ('By:% s'), get_comment_author_rss ());

    a esto:

    printf (__ ('% s'), get_comment_author_rss ());

    En ambos casos, simplemente estamos eliminando las palabras adicionales, "Comentarios sobre:" y "Por:", para que el feed tenga más sentido. Así que eso fue bastante fácil. El siguiente bit es un poco más complicado porque necesitamos cambiar hacia donde apunta la URL. Ahora, actualmente, apunta a la publicación para que el usuario pueda seguir los comentarios de esa publicación. Ya que esta plantilla controla * todos * los comentarios RSS de comentarios, no queremos romper esa funcionalidad, por lo que necesitamos una sentencia if de la siguiente manera:

     ID! = 3) comment_link ();  else echo $ comment-> comment_author_url; ?> 

    Así que aquí simplemente estamos verificando si la publicación tiene un ID de 3 (que en nuestro ejemplo es la ID de publicación del enlace del usuario) y si lo hace, publicamos la URL, y si no lo hacemos, hacemos la función regular comment_link () . Así que la plantilla RSS final se ve así:

     '; ?>   <?php if ( is_singular() ) printf(__('%s'), get_the_title_rss()); elseif ( is_search() ) printf(__('Comments for %s searching on %s'), get_bloginfo_rss( 'name' ), attribute_escape($wp_query->query_vars ['s'])); else printf (__ ('Comentarios para% s'), get_bloginfo_rss ('nombre'). get_wp_title_rss ()); ?>       comment_post_ID); get_post_custom ($ comment_post-> ID); ?>  <?php if ( !is_singular() )  $title = get_the_title($comment_post->CARNÉ DE IDENTIDAD); $ title = apply_filters ('the_title_rss', $ title); printf (__ ('Comentar en% 1 $ s por% 2 $ s'), $ title, get_comment_author_rss ());  else printf (__ ('% s'), get_comment_author_rss ()); ?>  ID! = 3) comment_link ();  else echo $ comment-> comment_author_url; ?>     post_password) && $ _COOKIE ['wp-postpass']! = $ comment_post-> post_password):?>      comment_ID, $ comment_post-> ID); ?>    

    Y como resultado, nuestros comentarios RSS ahora se ven así (para el enlace de usuario y una publicación regular):


    Paso 6 - Visualización de los últimos 10 elementos en la barra lateral

    A continuación, debemos mostrar nuestros 10 elementos más recientes en la barra lateral. Aquí hay un pequeño código para hacer eso:

      

    Para que vean que aquí estamos:

    1. Agarrando todos los comentarios aprobados de la publicación con ID de publicación = 3 como una matriz e invirtiéndolos para que obtengamos la más reciente primero
    2. Entonces creamos un
        elemento y para cada comentario en la matriz hasta 10 imprimimos una
      • Elemento con el enlace, título y descripción.

    Y con un poco de estilo, así es como se ve el resultado:

    Terminado!

    ¡Eso es todo! También me gusta grabar el feed a través de Feedburner para poder hacer un seguimiento de cuántas personas se suscriben. Hasta ahora ha sido una característica muy útil, aquí en NETTUTS tenemos cerca de 150 suscriptores al enlace. En PSDTUTS tenemos cerca de 500. Por lo tanto, son una buena manera de informar a la comunidad sobre nuevos enlaces y mantienen el sitio regularmente actualizado.

    Recientemente, he contratado al talentoso Joshua Blount para construir esto en un complemento de WordPress. Una vez que esté todo terminado, me aseguraré de que lo publique aquí como nuestro primer bit de código abierto de NETTUTS :-)