Cómo crear un back-end de WordPress que sea seguro para los clientes

Una vez que haya entregado un sitio web de WordPress a un cliente, debería ser champán para todos.

Desafortunadamente, en realidad, las Leyes de Murphy tienden a tener prioridad sobre los momentos de champán. Hay muchas cosas que pueden salir mal (y salen mal) después de la entrega , y es muy posible que el cliente sea la persona que involuntariamente destruya su propio sitio. Todo lo que se necesita es un poco de retoques inocentes con los archivos de tema, los complementos o incluso los widgets, y de repente  tendrá  un problema donde no debería haberlo.

A medida que WordPress agrega más poder y el potencial de complejidad se desarrolla en el tablero, es importante considerar un enfoque similar a la encapsulación en la programación orientada a objetos  al hacer que el poder de WordPress esté disponible para los clientes mientras se ocultan selectivamente las funciones clave para proteger el sitio. de la corrupción accidental.

En esta publicación, quiero brindarle una serie de consejos y mejores prácticas que le permitirán lograr algo parecido. Entonces, sin más preámbulos, comencemos con la creación de un back-end de WordPress que sea seguro para (¡y de!) clientes.

Comience con las mejores prácticas

Antes de adentrarnos en los detalles ásperos, nos será muy útil analizar algunas de las mejores prácticas para la seguridad, incluso si aparentemente no están relacionadas con el tema en cuestión.

Medidas básicas de seguridad

Un sitio web que cubre los aspectos básicos tiene más probabilidades de ser seguro (r). Por lo tanto, asegúrese de haber ejecutado las medidas de seguridad más simples como mínimo, que incluyen:

  1. reemplazando el nombre de usuario «admin»,
  2. cambiar la página de inicio de sesión del wp-login.php predeterminado, y
  3. agregando protección de inicio de sesión de fuerza bruta.

Para obtener más información, echa un vistazo a la guía de seguridad de WordPress de Nick . Y recuerda: una contraseña segura es tu primera línea de defensa, así que elige siempre una que sea tan fuerte como un caballo.

Roles del usuario

Lo siguiente en su lista debería ser el manejo de roles de usuario en WordPress.

Si se puede evitar, mantenga el rol de administrador para usted. En un mundo ideal, solo debería haber un administrador. En una instalación multisitio, mantenga ocultas las cuentas de superadministrador y administrador.

El administrador no debe ser un perfil laboral habitual; en su lugar, anime al cliente a usar otra cuenta con diferentes privilegios.

A los usuarios se les pueden asignar varios roles para que se ajusten a sus funciones en el sitio. Aquí hay un vistazo rápido a varios roles de usuario de WordPress y lo que pueden realizar.

  • El SuperAdmin  (disponible solo en instalaciones multisitio) tiene acceso completo a la red del sitio.
  • El administrador tiene acceso a todas las funciones dentro de un solo sitio.
  • Un editor puede controlar la publicación y la gestión de todas las publicaciones y páginas de un sitio web y, además, moderar los comentarios sin limitación.
  • Un autor puede gestionar, publicar y editar sus propios mensajes.
  • Un Colaborador puede administrar sus propias publicaciones, pero no puede publicarlas.
  • Un Suscriptor solo tiene privilegios de lectura y no puede realizar ningún cambio en el sitio web.

El rol predeterminado de un nuevo usuario se puede aplicar en Configuración > General desde el panel de control de WordPress. Los administradores pueden ver y cambiar las funciones de todos los usuarios navegando a  Todos los usuarios > Usuarios .

Simplificar el Dashboard para el Cliente

Simplificar el tablero tiene múltiples beneficios. Puede despejar la pantalla para liberar algo de espacio y puede ocultar opciones potencialmente dañinas, como editores de complementos y temas.

Guardar elementos del menú

La barra lateral del tablero de WordPress está llena de elementos y opciones. La configuración de roles para los usuarios eliminará varios de estos, pero puede haber una situación en la que prefiera eliminar algunos otros elementos de su elección. Aquí es donde usas remove_menu_page() y remove_submenu_page() . Solo necesita agregar algo de código a su archivo functions.php :

01
02
03
04
05
06
07
// Remove specific menu items
function remove_menus(){
if ( !current_user_can( 'manage_options' ) ) {
remove_menu_page( 'tools.php' );
}
}
add_action( 'admin_menu', 'remove_menus' );

Este código eliminará el menú Herramientas para cualquiera que no sea el administrador. Puede usar la función current_user_can() para elegir elementos de forma selectiva para los roles de usuario. El elemento clave a recordar aquí es el slug del menú. Los nombres de los menús de WordPress son bastante descriptivos para las babosas, pero algunos tienen cambios menores. Este ejemplo de WordPress Codex tiene una lista de todos los slugs de menú y los menús asociados.

Tenga en cuenta que no se supone que estas acciones eliminen estas opciones para el administrador y, por lo tanto, solo se aplican a los usuarios en el nivel de Editor e inferior. Además, estas opciones realmente no eliminan los menús; los esconden. Los clientes aún podían acceder a esas opciones a través de un hipervínculo directo.

Agregar ayuda y punteros

Puede ser útil ofrecer sugerencias rápidas y ayuda al cliente en el panel de control, y alentarlo a que lo llame a usted, el desarrollador, en lugar de intentar realizar cambios ellos mismos (incluso si parecen triviales). Agregar un widget es una excelente manera de que el cliente sepa dónde encontrar la información correcta.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
// Add a custom dashboard widget
 
function textfor_dashboard_widget( $post, $callback_args ) {
echo "
 
Hello Mr. Client, remember to contact your developer before you make changes to the plugin or theme.
<ul>
    <li>Website</li>
    <li>Phone Number</li>
</ul>
";
}
 
function add_dashboard_widgets() {
wp_add_dashboard_widget('dashboard_widget', 'Hello Mr. Client', 'textfor_dashboard_widget');
}
 
add_action('wp_dashboard_setup', 'add_dashboard_widgets' );

Así es como se verá tu widget:

Otra cosa útil sería agregar texto de ayuda a varios elementos y funciones del menú, para que el cliente sepa exactamente qué esperar del elemento que está a punto de usar. El texto personalizado puede ser de gran ayuda, ya que puede centrarse en los requisitos de los clientes. La función add_help_tab() es lo que necesita.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
// Add help text to a specific page
 
function adding_help_tab() {
 
$screen = get_current_screen();
 
if ( 'post' == $screen->post_type ) {
 
get_current_screen()->add_help_tab( array(
'id' => 'post',
'title' => ( 'Writing Guidelines' ),
'content' => '<strong>Hello, please keep these writing guidelines in mind.</strong>
<ul>
    <li>The content you add must be unique.</li>
    <li>Add relevant and exciting images with your content.</li>
    <li>Remember to add title, alt text, and a descriptive caption for your images.</li>
</ul>
',
) );
}
}
add_action( 'admin_head', 'adding_help_tab' );

Y así es como se verá:

Deshabilitar la edición de temas y complementos

Podemos ocultar las opciones de edición de temas y complementos, pero eso puede no ser necesariamente suficiente; puede ser más inteligente deshabilitar la edición por completo.

Una forma rápida de evitar la edición de temas es establecer el permiso de usuario en los archivos en ‘644’ usando chmod o un cliente FTP . Los cambios en el tema ahora requerirán el uso de un cliente FTP .

Sin embargo, es posible una forma más elegante que cubra temas y complementos con el archivo wp-config.php . Todo lo que necesita hacer es agregar una línea:

01
define( 'DISALLOW_FILE_EDIT', true );

Redirigir a los usuarios que no son administradores

Esta opción es especialmente útil para sitios que, de lo contrario, podrían tener varias personas accediendo al tablero.

Los autores y colaboradores simples podrían simplemente ser enviados a una página personalizada para enviar su contenido, en lugar de permitirles ingresar al tablero. Esto requerirá el siguiente código PHP en su archivo functions.php :

01
02
03
04
05
06
07
08
09
10
11
12
13
// Redirect non-admin users away from dashboard to a custom url
 
add_action( 'init', 'redirect_non_administrator' );
 function redirect_non_administrator() {
 //Check if the user is the administrator
 if ( is_admin() && ! current_user_can( 'administrator' ) &&
 //Make sure AJAX calls aren't blocked by the redirect
 ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
 //Replace my_custom_url with the target url
 wp_redirect( 'my_custom_url' );
 exit;
 }
 }

Mantener el acceso al tablero solo a unos pocos específicos se traducirá automáticamente en un back-end más seguro para el sitio web.

Obtenga complementos en el trabajo

Puede realizar cambios pequeños y rápidos con el código, pero si algunos cambios radicales están a la orden del día, obtenga complementos para hacer el trabajo. Le permitirán la flexibilidad de eliminar algunos elementos o recorrer los nueve metros completos y etiquetar en blanco el tablero. Aquí hay un par de complementos a considerar:

CMS de marca blanca

White Label CMS es un complemento muy popular y gratuito para personalizar el tablero. El complemento le permite personalizar los paneles y logotipos del tablero y eliminar menús, y también otorga acceso de Editor a ciertos menús y widgets.

La configuración del complemento ofrece cuatro opciones principales:

La marca le permitirá realizar cambios estéticos como:

  1. intercambiando el logo de WordPress con el tuyo,
  2. agregar información al pie de página, y
  3. introduciendo un CSS personalizado para la página de inicio de sesión.

Fiel a su nombre, la pantalla Paneles del tablero le permite controlar qué paneles mostrar y ocultar. También puede crear un par de widgets personalizados o agregar un widget RSS.

La configuración de administrador se puede usar para permitir una redirección de URL de inicio de sesión u ocultar cosas como la actualización de Nag, las opciones de pantalla y el cuadro de ayuda. También puede despejar el desorden de los metacuadros en las opciones de página y publicación, lo que debería ser un alivio. La opción también permite CSS personalizado para el administrador de WordPress.

La opción Modificar menús de White Label CMS

La opción Modificar menús es un jugador importante aquí y muy relevante para nuestra discusión actual. Le permite decidir qué opciones de menú deben estar disponibles para el rol de usuario Editor. Este cuadro ofrece dos perfiles personalizados, sitio web o blog, para que los elementos de menú recomendados estén disponibles para el usuario, o puede seleccionar elementos personalizados. También hay una opción para otorgar acceso al Editor al menú Apariencia  , que debe evitar a menos que comprenda los riesgos involucrados.

Descargar | Más información

Marca definitiva

Es justo que agreguemos un complemento de pago/premium para que coincida con la oferta gratuita anterior. Ultimate Branding es un poderoso complemento que le permite modificar y cambiar el nombre del tablero y la página de inicio de sesión. Además de los cambios cosméticos como la marca y los colores, otorga control sobre los widgets del tablero, los elementos de menú específicos de la función del usuario, las fuentes, el área de contenido de ayuda personalizada y muchos más cambios importantes y menores.

Ultimate Branding, como su nombre lo indica, se trata más de modificar el tablero para crear una apariencia personalizada. Sin embargo, eso no significa que este complemento omita la funcionalidad esencial. El área de configuración del complemento ofrece cinco opciones: Tablero , Cambio de texto , Imágenes , Barra de administración y Widgets :

Realiza funciones similares a White Label CMS pero es más potente y ofrece más opciones (como es de esperar de un complemento premium). Por ejemplo, incluso puede cambiar el saludo convencional de WordPress («Hola, nombre de usuario») según sus preferencias, o hacer cambios más importantes, como decidir qué widgets mostrar y crear una apariencia personalizada para el tablero.

Precio: $19 mensuales | Más información

Personalización completa con temas de panel

Los temas de tablero han recibido mucha atención recientemente y solo parecen estar creciendo en popularidad.

Actualmente operan en un estado de limbo entre temas y complementos reales. La mayoría de estos temas en realidad son complementos, pero es la dirección que toman lo que los distingue.

¡Aquí hay un par de ejemplos de calidad para darle un gusto!

Bosque



Forest tiene una agenda simple: hacer que el tablero se vea bien.
Puede controlar los elementos del menú, los widgets y la página de inicio de sesión, todo mientras se ve fabuloso con un diseño personalizado.

Este tema está orientado al comercio electrónico y encontrará que el menú y los widgets se han modificado para adaptarse. El área de configuración tiene opciones para cambiar la apariencia del tablero, así como la página de inicio de sesión. También puede agregar su CSS personalizado.

Precio: $14 | Más información

Blogs fáciles



Forest puede querer verse fabuloso, pero Easy Blogging quiere simplificar las cosas tanto como sea posible.
El tema está especialmente diseñado para simplificar el Tablero, que es exactamente lo que queremos. Al igual que con otros, este tema otorgará control sobre las opciones de menú, los widgets, la página de inicio de sesión y el tablero.

Easy Blogging está dirigido a usuarios novatos que desean realizar su trabajo de manera simple y sencilla, sin tener que lidiar con una sola pizca de complejidad. Reduce el tablero a lo esencial de páginas, publicaciones y comentarios, convirtiéndolo así en un área libre de posibles problemas. Si tiene en mente volver a las complejidades del tablero convencional (especialmente para fines administrativos), puede salir del «modo simple» y ponerse a trabajar. Prácticamente hace que el tablero sea infalible, al menos en lo que respecta a la posibilidad de mantener el sitio a salvo de daños accidentales.

Precio: $19 mensuales | Más información

Código personalizado del backend

Terminemos con una sugerencia ambiciosa: cree su propio tema personalizado para el panel (a través de un complemento). Hacerlo le dará el mayor control posible sobre su trabajo y le permitirá crear un backend de WordPress verdaderamente seguro que (1) desea y (2) sus clientes merecen.

Las posibilidades con tal opción son enormes. Por ejemplo, podría crear una transición fluida desde el front-end de WordPress hasta el back-end, haciéndolo menos intimidante y mucho más simple para el cliente.

Lo dejaré ahí como una tentadora sugerencia. Si está interesado en que exploremos más este tema, hágamelo saber en la sección de comentarios a continuación.

Conclusión

El back-end predeterminado de WordPress puede ser abrumador para los clientes, especialmente para los novatos. Los errores o cambios simples del cliente pueden crear grandes problemas para el sitio web. Como tal, vale la pena el tiempo y el esfuerzo, tanto para el cliente como para el desarrollador, para profundizar en los métodos que hacen que el back-end de WordPress sea a prueba de clientes. Puede crear un escenario de lo mejor de ambos mundos: la complejidad del tablero se puede ocultar al cliente sin comprometer el poder de WordPress.

Hemos enumerado varios consejos para que el backend sea más seguro para los clientes en esta publicación, pero, por supuesto, hay muchas otras opciones. Los temas de tablero personalizados son especialmente prometedores: agregan más poder mientras ocultan la complejidad. El tablero podría convertirse en una potencia con widgets personalizados y mayor funcionalidad para los clientes.

¿Qué medidas toma para simplificar el panel de control de WordPress y hacer que los sitios web sean ‘a prueba de clientes’? ¡Comparte con nosotros en la sección de comentarios a continuación!

Imagen cortesía de Voin_Sveta / Shutterstock