Cómo hacer que WordPress sea difícil para que los clientes se equivoquen
Publicado: 2022-03-10WordPress es un CMS maravillosamente poderoso que viene con muchas características versátiles que le dan la flexibilidad de funcionar de manera inmediata para una amplia gama de usuarios. Sin embargo, si es un profesional que crea temas y complementos personalizados, a veces estas características pueden ser problemáticas. Las mismas características y opciones que permiten que los temas listos para usar se adapten a muchos casos de uso diferentes a veces también se pueden usar para socavar un tema personalizado cuidadosamente diseñado creado para un caso de uso específico.
El siguiente artículo comprende una colección de fragmentos de código que uso una y otra vez en casi todos los proyectos de WordPress. Lo que todos tienen en común es que limitan la funcionalidad que es innecesaria, confusa o insegura. Todo lo que sigue se puede usar en cualquier sitio, pero estos consejos son especialmente aplicables para los profesionales que crean temas y complementos personalizados para los clientes.
Lectura adicional en SmashingMag:
- Cómo crear y personalizar un tema hijo de WordPress
- Redacción de documentación efectiva para usuarios finales de WordPress
- Limitar la visibilidad de las publicaciones en WordPress a través de nombres de usuario
- Utilizando roles de usuario en WordPress
La distinción notable es que los temas personalizados se pueden crear para cumplir un propósito específico. Por lo tanto, los espacios en blanco para el contenido de los autores pueden y deben ser mucho más estrechos. Un tema de WordPress bien diseñado debe tomar tantas decisiones de diseño como sea posible para que el autor no tenga que hacerlo.
Deshabilitar los complementos y el editor de temas
No hay una buena razón por la que alguien deba editar en vivo su tema personalizado o archivos de complementos a través del panel de control de WordPress. Los profesionales no trabajan de esa manera, y los muggles normalmente no se dan cuenta de lo fácil que es romper un sitio omitiendo un solo punto y coma. También es una vulnerabilidad de seguridad que los piratas informáticos pueden explotar. Afortunadamente, nuestros amigos de WordPress.org hicieron que fuera muy fácil deshabilitar esta función. Simplemente agregue el siguiente fragmento de código al archivo wp-config.php .
define( 'DISALLOW_FILE_EDIT', true );
Además del editor de temas, esto también deshabilitará el editor de complementos. Considero que esto es una característica, no un error.

Limite el editor visual y de texto
De forma predeterminada, el editor WYSIWYG de WordPress admite demasiadas opciones de formato para un tema personalizado bien diseñado. Permitir que los clientes anulen los colores del texto o los tamaños de fuente es una forma rápida de hacer que incluso el sitio más elegante parezca barato y feo. Si el texto de la publicación del blog está diseñado para estar siempre alineado a la izquierda, ¿por qué darle al autor un botón para alinearlo a la derecha? ¿Crees que se verá bien si el texto en la página Acerca de está morado, en negrita y en cursiva? Entonces no proporcione a su cliente los medios para hacerlo. En la mayoría de las situaciones, recomiendo desactivar el editor visual por completo.

Deshabilitar el editor visual
Agregue el siguiente fragmento al archivo functions.php de su tema y desaparecerá la pestaña para alternar el editor WYSIWYG.
function emersonthis_disable_visual_editor(){ # add logic here if you want to permit it selectively return false; } add_filter('user_can_richedit' , 'emersonthis_disable_visual_editor', 50);
Este es un buen comienzo, pero notará que los botones de negrita y cursiva todavía están presentes en el editor de texto sin formato. En mi experiencia, los clientes abusan de estos botones con mucha menos frecuencia cuando desaparece la gratificación instantánea del editor WYSIWYG. Pero sigo prefiriendo quitarlos si no son necesarios.

Eliminación de etiquetas rápidas en negrita y cursiva del editor de texto
El editor de texto tiene botones de etiquetas rápidas que envolverán el texto seleccionado con etiquetas <strong>
y <em>
. Agregue el siguiente código en el archivo functions.php de su tema y los autores ya no tendrán botones en negrita o cursiva.
# Removes bold and italic quicktags from text editor function emersothis_quicktags_settings( $qtInit ) { //To disable ALL butons it must be set to "," (not "") $qtInit['buttons'] = 'more,'; return $qtInit; } add_filter('quicktags_settings', 'emersonthis_quicktags_settings');
Esto elimina la posibilidad de que su cliente decida, por ejemplo, poner en cursiva un artículo completo. Pero esto no elimina la capacidad de escribir marcas en el editor de texto a mano. De vez en cuando, eso puede ser útil cuando estás en apuros.
Si se encuentra en una situación poco común en la que el usuario debe formatear el texto por sí mismo, puede dejar el editor visual habilitado pero deshabilitar botones específicos individualmente.
Deshabilitar botones en el editor visual
Una de las pocas veces que dejo habilitado el editor visual es cuando los autores escriben publicaciones largas o páginas que tienen una estructura interna propia. Por ejemplo, un autor de un artículo de 10 páginas podría necesitar la capacidad de agregar subtítulos. En estas situaciones, configuro clases personalizadas para las subsecciones y luego deshabilito todos los demás botones de formato que no son necesarios.
La API de WordPress para modificar el editor TinyMCE es un poco complicada porque necesita buscar los nombres de código utilizados para referirse a cada botón que desea eliminar. Obtiene el máximo rendimiento de su inversión al eliminar el botón "fregadero de cocina" que alterna toda la segunda fila que contiene los botones de formato más problemáticos. Agregar el siguiente código al archivo functions.php de su tema hará esto.
# Remove visual editor buttons function emersonthis_tinymce_buttons($buttons) { # Remove the text color selector $remove = array('wp_adv'); //Add other button names to this array # Find the array key and then unset return array_diff($buttons,$remove); } add_filter( 'mce_buttons', 'emersonthis_tinymce_buttons' );
Un truco para averiguar el nombre del código del botón que desea eliminar es inspeccionar el marcado del formulario. Al momento de escribir, cada botón tiene un nombre de clase que comienza con mce-i-
seguido por el nombre de código que colocaría en la matriz anterior.
Eliminar el botón "Agregar medios"
El botón "Agregar medios" aparece de forma predeterminada cada vez que un tipo de publicación personalizada admite la función de editor. Pero los tipos de publicaciones personalizadas se pueden usar para una amplia gama de cosas y, a menudo, no es apropiado que ese campo incluya imágenes.

La mayoría de las veces, cuando espero que el autor publique una imagen para acompañar el texto, uso miniaturas de publicaciones (también conocidas como imágenes destacadas). Esto facilita la integración de imágenes en plantillas de temas y también le da al desarrollador más control sobre el tamaño y las especificaciones de las imágenes.
Las fotos ad hoc incrustadas con el botón "Agregar medios" en el editor son difíciles de controlar y tienden a parecer incómodas según el lugar donde el autor inserta la imagen en relación con el texto circundante. También causan confusión a muchos autores, porque de un vistazo el botón "Agregar medios" se confunde fácilmente con el botón de carga "Imagen destacada" que aparece más abajo en la página (por defecto), y el tema puede usarlo de manera muy diferente. Casi siempre lo elimino agregando el siguiente código al archivo functions.php del tema.
# Remove media buttons function emersonthis_remove_add_media(){ # do this conditionally if you want to be more selective remove_action( 'media_buttons', 'media_buttons' ); } add_action('admin_head', 'emersonthis_remove_add_media');
Puede agregar lógica antes de remove_action()
para eliminar solo el botón de medios condicionalmente para ciertos tipos de publicaciones. Por ejemplo, es posible que desee permitir que los autores agreguen imágenes a las páginas, pero no publicaciones de blog que, en su lugar, usen miniaturas.

Deshabilitar las opciones del personalizador de temas
Si está trabajando en un tema secundario, el tema principal puede ofrecer opciones de personalización que no son apropiadas para el niño. Es posible que las opciones de personalización no se utilicen en su tema secundario o que tengan el potencial de romper cosas. De cualquier manera, la API del personalizador de temas de WordPress facilita deshacerse de ellos agregando el siguiente fragmento de código al archivo functions.php de su tema.
# Remove customizer options. function emersonthis_remove_customizer_options( $wp_customize ) { // $wp_customize->remove_section( 'static_front_page' ); // $wp_customize->remove_section( 'title_tagline' ); $wp_customize->remove_section( 'colors' ); $wp_customize->remove_section( 'header_image' ); $wp_customize->remove_section( 'background_image' ); // $wp_customize->remove_section( 'nav' ); // $wp_customize->remove_section( 'themes' ); // $wp_customize->remove_section( 'featured_content' ); // $wp_customize->remove_panel( 'widgets' ); } add_action( 'customize_register', 'emersonthis_remove_customizer_options', 30);
Cada línea en el fragmento anterior corresponde a una opción de personalización de tema individual que puede desactivar descomentándola.
Ocultar elementos del menú del tablero no utilizados
No todos los sitios tienen los mismos tipos de contenido; algunos sitios no tienen blog, por ejemplo. Si aplicamos la misma lógica al panel de control de WordPress que aplicamos a cualquier otra interfaz de usuario, es confuso e innecesario mostrar botones que no hacen nada. En este ejemplo, el elemento del menú Publicaciones sería innecesario, así que eliminémoslo agregando el siguiente fragmento de código a functions.php :
function emersonthis_custom_menu_page_removing() { // remove_menu_page( 'index.php' ); //Dashboard // remove_menu_page( 'jetpack' ); //Jetpack* remove_menu_page( 'edit.php' ); //Posts remove_menu_page( 'upload.php' ); //Media // remove_menu_page( 'edit.php?post_type=page' ); //Pages remove_menu_page( 'edit-comments.php' ); //Comments // remove_menu_page( 'themes.php' ); //Appearance // remove_menu_page( 'plugins.php' ); //Plugins // remove_menu_page( 'users.php' ); //Users // remove_menu_page( 'tools.php' ); //Tools // remove_menu_page( 'options-general.php' ); //Settings } add_action( 'admin_menu', 'emersonthis_custom_menu_page_removing' );
Cada línea corresponde a un menú específico en el tablero. Los nombres de los archivos no siempre coinciden con el nombre que aparece en el menú del panel, por lo que las líneas comentadas se dejan como referencia rápida.


Es importante comprender que la eliminación de estos elementos del menú en realidad no revoca los permisos del usuario. Un usuario aún podría acceder al elemento de menú oculto directamente usando la URL. Si el objetivo es hacer que el tablero esté menos abarrotado ocultando controles superfluos, probablemente esto esté bien. Si el objetivo es realmente evitar que un usuario acceda a esos controles, deberá modificar las capacidades del rol del usuario. Para lograr esto, agregue un fragmento como el siguiente al enlace de activación de un complemento (solo necesita ejecutarse una vez):
global $wp_roles; // global class $role = 'author'; $cap = 'delete_published_posts'; $wp_roles->remove_cap( $role, $cap );
Utilice esta tabla completa de todas las capacidades para encontrar las capacidades específicas que puede agregar o eliminar para cada uno de los roles predeterminados.
Agregue una pista sobre cómo funcionan los saltos de línea en el editor
De forma predeterminada, el editor visual (TinyMCE) creará un nuevo párrafo cuando el autor presione Retorno . Si solo desea un salto de línea a la antigua (también conocido como retorno de carro), debe presionar Shift+Return . Esto es ingenioso y poderoso pero no intuitivo para muchos autores. Empecé a agregar un recordatorio rápido para evitar la inevitable queja sobre "un montón de espacios en blanco extraños" que aparecen en una publicación o página.

Agregue el siguiente fragmento a su archivo functions.php . Cambia el valor de $tip
para decir lo que quieras recordar a tus autores.
# Adds instruction text after the post title input function emersonthis_edit_form_after_title() { $tip = '<strong>TIP:</strong> To create a single line break use SHIFT+RETURN. By default, RETURN creates a new paragraph.'; echo '<p>'.$tip.'</p>'; } add_action( 'edit_form_after_title', 'emersonthis_edit_form_after_title' );
Esta técnica podría usarse para inyectar un recordatorio sobre cualquier cosa que desee que los autores recuerden al agregar o editar contenido.

No reparta cuentas de administrador
El rol de administrador de WordPress es muy poderoso y un gran poder conlleva una gran responsabilidad. Algunos clientes son usuarios experimentados de WordPress que administran su sitio de manera competente. Muchos de ellos no lo son. Estos últimos no deberían andar hurgando como administradores. En su lugar, conviértalos en editores y cree una cuenta de administrador separada con una contraseña súper segura. Si tiene una afiliación continua con el cliente, puede conservar esas credenciales hasta que el cliente esté listo para administrar el sitio por sí mismo.

Alternativamente, proporcione al cliente ambos conjuntos de credenciales y pídales que almacenen las credenciales de administrador en un lugar seguro y que solo las usen para realizar tareas de administración. Muchos clientes perderán rápidamente las credenciales de administrador, pero eso está bien: la contraseña siempre se puede restablecer, y estos son a menudo los tipos de clientes que lo volverán a contratar para que haga el mantenimiento de rutina del sitio de todos modos.
La razón más importante para ser tacaño con las cuentas de administrador es que son una vulnerabilidad de seguridad. Un efecto secundario agradable es que los usuarios principiantes de WordPress a menudo encuentran que la interfaz de usuario del tablero es menos abrumadora cuando inician sesión como autores o editores porque hay menos menús para clasificar mientras aprenden habilidades básicas como agregar o editar publicaciones.
Usar complementos mu
El directorio mu-plugins/ existe desde hace mucho tiempo, pero la mayoría de los hackers de WordPress que conozco nunca han oído hablar de él. El "mu" significa debe usar . El directorio es una ubicación alternativa donde se pueden instalar complementos.

La diferencia es que los complementos "debe usar" se activan automáticamente y no se pueden desactivar por accidente en todo el tablero. También se cargan antes que los otros complementos. Esto es ideal para complementos que deben estar presentes para que el sitio funcione correctamente. También es una gran alternativa para los trucos no presentacionales que normalmente podrían atascarse en el archivo functions.php de su tema personalizado. Por ejemplo, me gusta definir tipos de publicaciones personalizadas en un complemento mu, porque ese contenido debe persistir ya sea que un tema en particular esté activo o no.
El directorio mu-plugins/ no existe de fábrica. Lo creas manualmente dentro de wp-content/ .
wp-content/ mu-plugins/ plugins/ themes/ ...
La mayor limitación es que WordPress solo busca archivos en el nivel superior de mu-plugins/ e ignorará el código dentro de un subdirectorio. Sin embargo, puede solucionar esto creando un solo archivo PHP en la parte superior de mu-plugins/ que carga el código desde un subdirectorio hermano. También tenga en cuenta que las notificaciones de actualización no se aplican a los complementos mu. Pienso en mu-plugins/ como el lugar para poner código importante en el que el cliente nunca debería tener que pensar.
Obtenga más información sobre los complementos obligatorios en el Codex. Si desea solicitar otros complementos evitando la posibilidad de desactivarlos, puede encontrar útil la biblioteca WDS-Required-Plugins.
Nota final
Puede que le resulte contradictorio desactivar la funcionalidad que WordPress le ofrece de forma gratuita. Pero recuerda que tu cliente no te está pagando por darle muchos botones. Su trabajo es crear un sitio web eficaz y sólido que se adapte a los objetivos del cliente. Al deshabilitar la funcionalidad problemática o superflua, en realidad está entregando más valor .
Si desea obtener más fragmentos, he creado un repositorio público en GitHub de fragmentos útiles de WordPress que contiene versiones actualizadas de los trucos anteriores, así como otros que agrego periódicamente. Si tiene sus propios fragmentos prácticos que desea compartir, ¡las solicitudes de incorporación de cambios son más que bienvenidas!