martes, 7 de junio de 2011

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Eliminar completamente los comentarios

Posted: 07 Jun 2011 04:11 AM PDT

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

No hay comentarios:

Publicar un comentario

Seguidores

Archivo del blog