Saltar al contenido →

Cómo desactivar el editor enriquecido de texto para el tipo de campo textarea de buddypress

Esta semana johnywhy me hizo esta pregunta en el foro de mi plugin.

¿Tus usuarios están jugueteando con el editor de texto enriquecido? ¿Estás viendo colores extraños, fuentes enormes y negritas por todo tu sitio web? Pues deberías desactivar ese editor de texto enriquecido del demonio.

Voy a explicarte dos maneras de realizar esto.

La manera sencilla

¡Buddypress tiene un filtro para esto! “bp_xprofile_is_richtext_enabled_for_field”. Por lo tanto, sólo tienes que utilizarlo.

  • Si quieres deshabilitar el editor de texto enriquecido para TODOS los campos:

  • Si quieres deshabilitar el editor para sólo un campo:

  • Si quieres deshabilitar el editor para más de un campo pero no todos:

La manera complicada

johnywhy quería crear un nuevo tipo de campo Textarea. La única diferencia sería permitir a los usuarios desactivar el editor de texto enriquecido desde la admin de wordpress. Necesitas crear un nuevo tipo de campo que extienda el original «Textarea» de Buddypress.

Voy a explicar los pasos a seguir para crear tu propio plugin. No voy a explicar cómo crear un plugin. Voy a explicar cómo crear este plugin y cómo funciona.

  1. Crear una carpeta llamada “bp-xprofile-custom-textarea”. Es el nombre del plugin.
  2. Dentro de esta carpeta, crear una nueva carpeta llamada “classes”.
  3. Dentro de bp-xprofile-custom-textarea/classes, crear un archivo php llamado “Bpxct_Field_Type_Textarea.php”. Este archivo contendrá nuestro tipo de campo personalizado “Textarea”. Lo que hice fue copiar la clase original “Textarea” de Buddypress. Puedes encontrar esta clase en “buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-textarea.php”. He hecho algunos cambios a esta versión para adaptarla a lo que necesito. Veamos:
    • Primero, modifiqué el constructor:

      En los comentarios, explico lo que cambié.

    • Segundo, necesito sobreescribir el método “admin_new_field_html” porque “Textarea” no lo estaba usando. En mi tipo de campo, lo necesito para mostrar el checkbox.

      Sobre el código HTML, quizás te estés preguntando porque utilizo dos campos, uno oculto y otro el checkbox. Buddypress espera encontrar al menos un campo «option» cuando activas «support_options». Si nuestro checkbox está desmarcado, se mostraría un error que dice «These field options are invalid”. Pruébalo tú mismo.


      Ahora implementaré el siguiente comportamiento:

      • Si “disable_richtext” está marcado, elimino el campo oculto.

      • Si “disable_richtext” está desmarcado, guardo el valor del campo oculto.

    • Tercero, sobreescribo dos métodos que muestran el campo: “admin_field_html” and “edit_field_html”.


      Los cambios que hice son los mismos. Busco una opción llamada “disable_richtext”. Si la encuentro, desactivo el editor de texto enriquecido para este campo. Si no la encuentro, me remitiré al código original de Buddypress.

  4. Dentro de la carpeta principal, crear la carpeta “js” con un sólo archivo llamado “admin.js”.

    Este código hace lo que contaba anteriormente. Después de pinchar en el botón «submit», si «disable_richtext» está marcado, elimino el campo oculto.


  5. Ahora crear el archivo principal del plugin “bp-xprofile-custom-textarea.php”. Colocar este archivo en la carpeta principal de tu plugin.

    Poco que decir.

    • El método “init” está incluyendo mi nueva clase: “Bpxct_Field_Type_Textarea.php”.

    • El método “admin_init” está incluyendo mi nuevo archivo js: “admin.js”.

    • El método “bpxct_get_field_types” es un filtro que añade un nuevo tipo de campo «textarea».

  6. Finalmente, crear un readme.

¡Ya está! Ahora puedes subir tu plugin a tu sitio web. En vez de mostrar el tipo de buddypress, verás el tuyo: “Custom multi-line Text Area”. Ahora puedes desactivar el editor de texto enriquecido por cada textarea desed la admin de wordpress. ¡Enhorabuena!

Descarga el plugin desde github si lo deseas.


¡Gracias a johnywhy por preguntarme esto en el foro y darme la idea para este artículo! johnywhy es una persona que enseña informática a niños desfavorecidos en un gueto. Lee más sobre esto en www.facebook.com/bayviewboom.

Share