Filtrado de palabras prohibidas en WordPress

Una funcionalidad de los viejos foros de toda la vida que es imprescindible son los filtros de palabras prohibidas, aquellas que, si un usuario las escribe en un mensaje automáticamente quedan bloqueadas por el sistema.

Curiosamente, a pesar del enorme crecimiento de WordPress, en parte gracias a su sistema de comentarios que lo hacen activo casi como un foro, disponer de un sistema de filtro de palabras prohibidas era algo de lo más solicitado por los usuarios y no siempre disponible.

Esto se acabó, pues con el plugin WP Content Filter puedes definir fácilmente qué palabras se bloquearán, siendo sustituidas por asteriscos. De este modo, si añades en el campo de palabras prohibidas el término “press” aparecerá como “*****”. Ahora bien, como ya habrás adivinado esto tiene un peligro, y es que si escribe alguien en un comentario o donde sea “WordPress” aparecería como “Word*****”, así que sé concienzudo con qué palabras eliges para bloquear.

Por lo demás, el plugin es sencillísimo. En su pantalla de ajustes tienes un campo para incluir las palabra prohibidas (separadas por comas) y a continuación una serie de configuraciones de cómo quieres que se comporte y donde aplicará el filtro, pudiendo elegir que se filtren prácticamente en todas partes, a saber …

  • Entradas
  • Widget de entradas recientes de la barra lateral
  • Título de las entradas
  • Comentarios
  • Widget de comentarios recientes de la barra lateral
  • Autores de comentarios
  • Tags
  • Nube de Tags

Como ves, muy completito y, sobre todo, útil y eficaz, genial para quitar manías a los spammers y pesados de la autódromo y cosas así, que siempre hay.

Pruébalo y nos cuentas que tal.

Sistema de comentarios de Facebook, ¿sí o no?

Facebook
Fuente de la imagen: stoneysteiner

Desde hace unos días, en Blogpocket se puede comentar mediante el sistema de Facebook que permite externalizar esta forma de participación. Hemos optado también por dejar la opción de usar el sistema incluido en la instalación de WordPress para aquellos visitantes que no tengan cuenta de Facebook o no quieran utilizarlo.

¿Cómo se intala?

El sistema de comentarios de Facebook es muy fácil de instalar en tu blog. Hay algunos plugins que te facilitan la labor pero yo prefiero, en este caso, hacerlo manualmente.

En Cómo instalar el nuevo sistema de comentarios de Facebook en tu blog publiqué un tutorial detallado.

Sin embargo, es preciso aclarar que se ha eliminado la opción “iframe” y ahora puedes añadir el sistema en código HTML5. Cuando pinchas en el botón “Get code” (obtener código) puedes elegir una de las dos pestañas: HTML5 o XFBML.

Tanto en HTML5 como en XFBML hay que hacerlo en dos pasos: primero copiar un código después de la etiqueta <body> (normalmente en el archivo header.php de tu instalacion de WordPress) y después pegar la llamada al sistema en aquel lugar adonde quieras que aparezca el formulario para comentar (yo lo he situado en el archivo comments.php, el archivo correspondiene a la plantilla de comentarios llamado desde single.php).

Además, en XFBML, hay que pegar un namespace en la etiqueta <html> para que funcione en las versiones más antiguas de Internet Explorer.

Resumen: Crea tu aplicación en developers.facebook.com/apps e ir a developers.facebook.com/docs/reference/plugins/comments/ y obtener el código para añadir a tu blog.

¿Cómo funciona?

En el formulario para comentar con Facebook solo puedes hacerlo si tienes una sesión abierta. Puedes elegir si publicar el comentario en tu perfil o no. Si lo haces, entonces aparacerá en tu muro de Facebook y se podrá responder allí, reflejándose en el blog y viceversa.

Puedes configurar el sistema de comentarios de Facebook para que se moderen (lo que es recomendable para evitar a los trolls). Si ocultas un comentario y se eligió la opción de publicarlo en tu perfil, solo lo verán los amigos del usuario que comentó.

Resumen: modera los comentarios en developers.facebook.com/tools/comments.

¿Es conveniente intalar el sistema de comentarios de Facebook?

Eso tiene sus detractores pero también hay una corriente a favor de emplear sistemas externos de comentarios en general. ¿Por qué puede ser más beneficioso, o no, utilizar Facebook para comentar en tu blog?

En principio puede ser otra manera de frenar el spam y a los trolls. En teoría, para comentar con el sistema de Facebook tienes que ser una persona y no un robot. Aunque existe la posibilidad de que aumenten los spammers humanos.

Puede aumentar el tráfico hacia tu blog, debido a que habrá más enlaces de tus posts en los muros de aquellos usuarios que han comentado y han elegido la opción de publicar el comentario en su perfil. Así mismo es una forma de dar a conocer tu blog en nuevas comunidades.

En cuanto a los posibles problemas, Facebook no permite exportar los comentarios (tal como Disqus, otro sistema para externalizar comentarios). Si algún día decidieses abandonar el sistema de Facebook perderías todos los comentarios, cosa que no sucede con el sistema propio de tu WordPress.

Y por último, Facebook en sí, puede ser una barrera simplemente para que tus visitantes comenten en tu blog.

Por todo ello, yo he decidido mantener los dos sistemas en paralelo y que mis lectores decidan cuál sistema utilizar.


Este blog pertenece a la red Blogpocket Multisite, donde puedes encontrar también: Mariposas en la maleta, Acordes Modernos y Cicuta en la sangre

Desactivar comentarios en páginas definitivamente

Una de las virtudes “2.0″ de WordPress y cualquier CMS que se precie son los comentarios a las publicaciones, pero hay ocasiones en que uno puede decidir que en ciertas entradas no sean interesantes o necesarios.

Un caso habitual son las páginas estáticas, de pura información, donde los comentarios de los visitantes no tienen sentido.

Pues bien, aunque podemos hacerlo manualmente, quitando la llamada a los comentarios en el fichero page.php, eliminando el código … 

<?php comments_template(); ?>

Pero este sistema tiene un problema, y es que si actualizas el tema perderás los cambios, y tendrás que acordarte de volver a eliminar el código.

Si quieres inhabilitar los comentarios en páginas, de manera permanente, y sin que te afecten las actualizaciones, puedes – en su lugar – incluir este código en el fichero functions.php (sin las llamadas a php) o subirlo a tu WordPress como plugin:

<?php # -*- coding: utf-8 -*-
/**
Plugin Name: Disable Comments On Pages
Version:     1.0
Author:      Thomas Scholz
Author URI:  http://toscho.de
License:     GPL
*/
// Este archivo no lo llama WordPress
! defined( 'ABSPATH' ) and exit;
// Si existe la función al fichero le llamamos plantilla de comentarios
// No haremos nada en ese caso
if ( ! function_exists( 't5_disable_comments_on_pages' ) ) {
	/**
	 * Reemplaza la plantilla original de comentarios
	 * con la ruta de este archivo en las páginas
	 *
	 * @param  string $file Original comments template file path.
	 * @return string
	 */
	function t5_disable_comments_on_pages( $file ) {
		return is_page() ? __FILE__ : $file;
	}
	add_filter( 'comments_template', 't5_disable_comments_on_pages', 11 );
}

Este estupendo truco es de Thomas Scholz en WP Engineer

Editor nativo de WordPress en el formulario de comentarios

¿A que has probado un montón de plugins para dar a la caja de texto del formulario de comentarios más funcionalidades? y ¿a que ninguno te ha satisfecho del todo por algún motivo?. Entonces ¿que te parecería que el formulario de comentarios tuviera el editor nativo de WordPress?.

Pues así de fácil, si es lo que buscas en escolaWP han creado un plugin que hace exactamente eso.

Una vez descargado e instalado puedes ajustar algunas opciones, como si se verán las pestañas de Visual y HTML, si permitirás añadir medios o si permitirás todas las funcionalidades del editor o será limitado.

Guardas y ya tienes un formulario de comentarios con todo lo que tus visitantes puedan necesitar.

Nota: en la entrada de escolaWP tienes la documentación completa por si no quieres instalar el plugin y prefieres aplicar el código a tu gusto

Nota: como bien nos recuerda Avelino solo funciona con WordPress 3.3 o superior

Eliminar completamente los comentarios

No me refiero a eliminarlos de la plantilla para que no puedan comentar, ni siquiera a desactivarlos desde los ajustes de WordPress, me refiero a eliminar completamente los comentarios y cualquier referencia, incluso visual, a su existencia.

Está claro, los comentarios son parte de los blogs, esencia misma de la Web 2.0, pero hay ocasiones en que - sobre todo para trabajos a clientes - en que es posible que quieras quitar cualquier atisbo de que tal cosa siquiera existe.

En este raro, pero probable, caso, Frank ha elaborado un plugin cuyo código quita toda referencia a los comentarios, vamos, que dejan de existir en tu WordPress, no verá rastro ni cita alguna a los mismos.

Solo tienes que guardar este código con el nombre que quieras, subirlo a la carpeta 'plugins' de tu instalación de WordPress, activarlo y habrás eliminado totalmente los comentarios de tu WordPress.

PHP:
  1. <?php
  2. /**
  3. * Plugin Name: Eliminar comentarios completamente
  4. * Plugin URI: http://bueltge.de/
  5. * Text Domain: remove_comments_absolute
  6. * Domain Path: /languages
  7. * Description: Desactiva las funciones de comentarios y quita todas sus referencias en la instalación de WordPress
  8. * Author: Frank Bültge
  9. * Version: 0.0.1
  10. * Licence: GPLv2
  11. * Author URI: http://bueltge.de
  12. * Upgrade Check: none
  13. * Last Change: 01.06.2011
  14. */
  15. if ( ! class_exists( 'Remove_Comments_Absolute' ) ) {
  16.     add_action( 'plugins_loaded', array( 'Remove_Comments_Absolute', 'get_object' ) );
  17.     class Remove_Comments_Absolute {
  18.         static private $classobj = NULL;
  19.         /**
  20.          * Constructor, init on defined hooks of WP and include second class
  21.          *
  22.          * @access  public
  23.          * @since   0.0.1
  24.          * @uses    add_filter, add_action
  25.          * @return  void
  26.          */
  27.         public function __construct () {
  28.             add_filter( 'the_posts', array( $this, 'set_comment_status' ) );
  29.             add_filter( 'comments_open', array( $this, 'close_comments', 10, 2 ) );
  30.             add_filter( 'pings_open', array( $this, 'close_comments', 10, 2 ) );
  31.             add_action( 'admin_init', array( $this, 'remove_comments' ) );
  32.             add_filter( 'add_menu_classes', array( $this, 'add_menu_classes' ) );
  33.             add_action( 'admin_head', array( $this, 'remove_comments_areas' ) );
  34.             add_action( 'wp_before_admin_bar_render', array( $this, 'admin_bar_render' ) );
  35.         }
  36.         /**
  37.          * Handler for the action 'init'. Instantiates this class.
  38.          *
  39.          * @access  public
  40.          * @since   0.0.1
  41.          * @return  object $classobj
  42.          */
  43.         public function get_object () {
  44.             if ( NULL === self :: $classobj ) {
  45.                 self :: $classobj = new self;
  46.             }
  47.             return self :: $classobj;
  48.         }
  49.         /**
  50.          * Set the status on posts and pages - is_singular ()
  51.          *
  52.          * @access  public
  53.          * @since   0.0.1
  54.          * @uses    is_singular
  55.          * @param   string $posts
  56.          * @return  string $posts
  57.          */
  58.         public function set_comment_status ( $posts ) {
  59.             if ( ! empty( $posts ) && is_singular() ) {
  60.                 $posts[0]->comment_status = 'closed';
  61.                 $posts[0]->post_status = 'closed';
  62.             }
  63.             return $posts;
  64.         }
  65.         /**
  66.          * Close comments, if open
  67.          *
  68.          * @access  public
  69.          * @since   0.0.1
  70.          * @param   string | boolean $open
  71.          * @param   string | integer $post_id
  72.          * @return  string $posts
  73.          */
  74.         public function close_comments ( $open, $post_id ) {
  75.             // if not open, than back
  76.             if ( ! $open )
  77.                 return $open;
  78.             $post = get_post( $post_id );
  79.             if ( $post -> post_type ) // all post types
  80.                 return FALSE;
  81.             return $open;
  82.         }
  83.         /**
  84.          * Change options for dont use comments
  85.          * Remove meta boxes on edit pages
  86.          * Remove support on all post types for comments
  87.          * Remove menu-entries
  88.          *
  89.          * @access  public
  90.          * @since   0.0.1
  91.          * @uses    update_option, get_post_types, remove_meta_box, remove_post_type_support
  92.          * @return  void
  93.          */
  94.         public function remove_comments () {
  95.             // int values
  96.             foreach ( array( 'comments_notify', 'default_pingback_flag' ) as $option )
  97.                 update_option( $option, 0 );
  98.             // string false
  99.             foreach ( array( 'default_comment_status', 'default_ping_status' ) as $option )
  100.                 update_option( $option, 'false' );
  101.             // all post types
  102.             // alternative define an array( 'post', 'page' )
  103.             foreach ( get_post_types() as $post_type ) {
  104.                 // comment status
  105.                 remove_meta_box( 'commentstatusdiv', $post_type, 'normal' );
  106.                 // remove trackbacks
  107.                 remove_meta_box( 'trackbacksdiv', $post_type, 'normal' );
  108.                 // remove all commnts from tabels
  109.                 remove_post_type_support( $post_type, 'comments' );
  110.             }
  111.             // remove dashboard meta box for recents comments
  112.             remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
  113.             // Remove menu entries with WP 3.1 and higher
  114.             if ( function_exists( 'remove_menu_page' ) ) {
  115.                 remove_menu_page( 'edit-comments.php' );
  116.                 remove_submenu_page( 'options-general.php', 'options-discussion.php' );
  117.             } else {
  118.                 // unset comments
  119.                 unset( $GLOBALS['menu'][25] );
  120.                 // unset menuentry Discussion
  121.                 unset( $GLOBALS['submenu']['options-general.php'][25] );
  122.             }
  123.         }
  124.         /**
  125.          * Add class for last menu entry with no 20
  126.          *
  127.          * @access  public
  128.          * @since   0.0.1
  129.          * @param   array string $menu
  130.          * @return  array string $menu
  131.          */
  132.         function add_menu_classes ( $menu ) {
  133.             $menu[20][4] .= ' menu-top-last';
  134.             return $menu;
  135.         }
  136.         /**
  137.          * Remove areas for comments in backend via JS
  138.          *
  139.          * @access  public
  140.          * @since   0.0.1
  141.          * @return  string with js
  142.          */
  143.         public function remove_comments_areas () {
  144.             ?>
  145.             <script type="text/javascript">
  146.             //<![CDATA[
  147.             jQuery(document).ready( function($) {
  148.                 $( '.table_discussion' ).remove();
  149.             });
  150.             //]]>
  151.             </script>
  152.             <?php
  153.         }
  154.         /**
  155.          * Remove comment entry in Admin Bar
  156.          *
  157.          * @access  public
  158.          * @since   0.0.1
  159.          * @uses    remove_menu
  160.          * @return  void
  161.          */
  162.         public function admin_bar_render () {
  163.             // remove entry in admin bar
  164.             $GLOBALS['wp_admin_bar'] -> remove_menu( 'comments' );
  165.         }
  166.     } // end class
  167. } // end if class exists
  168. ?>

Lo que hace el plugin es lo siguiente:

  • Cierra todos los formularios de comentarios existentes
  • Quita los widgets relacionados con comentarios en el editor
  • Quita todos los enlaces a la gestión de comentarios de los menús de WordPress
  • Quita la columna de comentarios del Escritorio
  • Quita los ajustes de comentarios

Aquí tienes unas capturas de como queda de solito y desolado WordPress sin comentarios. Ahora tu decides, igual para algún proyecto te viene bien.
nocomentarios1 nocomentarios2

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Domina tu Blog

Deja mensajes a tus colaboradores

Si tienes un sitio colaborativo igual es buena idea que dejes mensajes al resto de autores de tu WordPress. Puedes hacerlo de muchas maneras pero una muy sencilla, para mensajes que quieres que tengan siempre presentes, sería la siguiente:

  1. Edita el fichero functions.php
  2. Añade lo siguiente (personalizado a tu gusto claro):
    //aviso a autores
    function fn_admin_notices() {
    if ( !current_user_can( 'edit_posts' ) )
    echo '¡Recuerda moderar los comentarios cada día!';
    }
    add_filter( 'admin_notices', 'fn_admin_notices');

  3. Guarda los cambios

Hay dos variables que puedes/debes cambiar. La primera, obviamente, es el texto a mostrar, y la segunda es qué tipo de usuarios, dependiendo de sus capacidades, verán el mensaje, en este caso los de perfil de Autor (edit_posts), incluso puedes usar varios mensajes dependiendo del tipo de perfil de usuario.

Fácil ¿eh?

Como combatir el spam

Aunque de vez en cuando las bandas de spammers reciben un varapalo de las fuerzas de seguridad, es un negocio tan redondo que por cada mafia que encierran en la cárcel aparecen 10 más queriendo ingresos rápidos ofreciendo la última maravilla farmaceútica o promocionando servicios de todo cuño en tu sitio.

Pues bien, para defendernos del spam tenemos múltiples herramientas, que recopilo aquí para deleite del respetable:

  1. Lo primero de todo es aprender como trabajan los spammers
  2. Akismet, sin olvidar que no es gratuito del todo
  3. Typepad antispam, que tango gustó a Guille
  4. Wanguard, no es un antispam para comentarios pero te protege de otros indeseables individuos
  5. Sin plugins, solo con los ajustes de comentarios de WordPress
  6. Desde .htaccess
  7. Antispam Bee, un buen aliado
  8. Elimina los trackbacks spam manualmente o con Simple trackback validation
  9. Hashcash
  10. WP-Spamfree
  11. Key Captcha
  12. Cookies for comments, una solución muy interesante
  13. Bad behavior
  14. Anti spambot
  15. Defensio

Ah, si conocéis algún otro método compartirlo en los comentarios, esto es casi un servicio público.

Como combatir el spam

Aunque de vez en cuando las bandas de spammers reciben un varapalo de las fuerzas de seguridad, es un negocio tan redondo que por cada mafia que encierran en la cárcel aparecen 10 más queriendo ingresos rápidos ofreciendo la última maravilla farmaceútica o promocionando servicios de todo cuño en tu sitio.

Pues bien, para defendernos del spam tenemos múltiples herramientas, que recopilo aquí para deleite del respetable:

  1. Lo primero de todo es aprender como trabajan los spammers
  2. Akismet, sin olvidar que no es gratuito del todo
  3. Typepad antispam, que tango gustó a Guille
  4. Wanguard, no es un antispam para comentarios pero te protege de otros indeseables individuos
  5. Sin plugins, solo con los ajustes de comentarios de WordPress
  6. Desde .htaccess
  7. Antispam Bee, un buen aliado
  8. Elimina los trackbacks spam manualmente o con Simple trackback validation
  9. Hashcash
  10. WP-Spamfree
  11. Key Captcha
  12. Cookies for comments, una solución muy interesante
  13. Bad behavior
  14. Anti spambot
  15. Defensio

Ah, si conocéis algún otro método compartirlo en los comentarios, esto es casi un servicio público.

Akismet 2.5

No sé si te habrás fijado pero ya está disponible la versión 2.5 de Akismet que, de este modo, pega un salto de versión importante.

Esta actualización incluye interesantes nuevas características como …

  • Un historial de estados de comentarios, para que puedas ver que comentarios fueron capturados y/o liberados por Akismet, cuales se marcaron como spam o al contrario por el moderador.
  • Ahora los enlaces se resaltan en el cuerpo del comentario, para así revelar enlaces ocultos o mal tecleados
  • Si tu proveedor de alojamiento no puede conectar con los servidores de Akismet el plugin lo intentará automáticamente cuando tu conexión vuelva
  • Los moderadores pueden ver el número de comentarios aprobados a cada usuario
  • Los informes de Spam y Unspam incluyen ahora más información, para mejorar su precisión

Aquí tienes un vídeo de las novedades …


Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Domina tu Blog

Descubre a quien le gustan tus entradas

Ya casi es monotema hablar de WordPress.com pero es que en Automattic están desbocados últimamente con novedades, y la de hoy es – aunque parezca poca cosa – muy importante.

Hace relativamente poco tiempo se introdujo el botón “Me gusta” en WordPress.com pero faltaba algo: saber a quién le gustan tus publicaciones.

Pues bien, desde hoy ya puedes saber, no solo quien pulsa el dichoso botoncito de “Me gusta” sino que también puedes saber quien se suscribe a tu blog. Esto, que parece una nadería es realmente importante pues es el primer paso para gestionar el tráfico de tu sitio, fidelizar a tus lectores e incluso hacer márketing online, algo que no es nuevo pero si en WordPress.com.

Lo mejor de todo (o no, según gustos) es que te llegará un email cuando a alguien le guste una entrada tuya o se suscriba a tu sitio, para así poder hacer un seguimiento de la popularidad de tu blog. Solo tienes que ir a la página de “Opciones -> Comentarios” y comprobar que están marcadas las casillas correspondientes:

Por supuesto, si tu sitio es muy popular quizás sea mejor desactivar esas opciones pero no desestimes la potencia de estos avisos de cara a una atención personalizada a los lectores de tu sitio, impagable para empresas (¿he dicho ya que WordPress.com empieza a ser ya una estupenda plataforma para blogs corporativos?).