TruquiTrucos Dev – Personaliza tu WordPress con un plugin (y olvídate del functions.php)

Publicada en WordPress.

Una de las claves del éxito de WordPress es la facilidad con la que lo podemos adaptar a nuestras necesidades. Y no, esta vez no estoy hablando del enorme ecosistema de temas y plugins que tienes a tu disposición (que también), sino de esos pequeños fragmentos de código que pegamos por ahí para conseguir aquella funcionalidad extra que tanto queremos. Ejemplos de estas personalizaciones son:

  1. Modificaciones en la pantalla de login de WordPress,
  2. Subir archivos con otras extensiones,
  3. Añadir el atributo alt a tus imágenes automáticamente y
  4. otros muchos ejemplos.
  5. No, en serio… ¡hay muchos más ejemplos! 😁

Mola un montón, ¿verdad? Pues bien, veamos (algunos de) los problemas que entrañan estos pequeños fragmentos de código y cómo solucionarlos de una vez por todas.

El problema

Existen dos grandes problemas en el mundillo este de las personalizaciones de WordPress. Por un lado, muchos usuarios copian código sin saber o entender qué están copiando. Este problema es especialmente difícil de combatir, porque una persona que no sepa programar o no tenga ninguna noción de cómo funciona el código fuente difícilmente podrá evaluar si el fragmento de código que ha encontrado por la red es seguro y confiable. Mi recomendación es que únicamente copies y pegues código que encuentres en webs de confianza.

Por ejemplo, nuestro blog es una fuente fiable, ya que (casi) todos los fragmentos de código que publicamos han sido escritos por nosotros o como mínimo probados en nuestros entornos de desarrollo, así que no deberías tener problemas con ellos. Otra fuente con innumerables recursos que puedes usar es el blog de Fernando Tellado, Ayuda WordPress, o los recursos que ha recopilado y publicado en su último libro, WordPress 1001 trucos.

Perro en el espacio
Reconócelo: los usuarios muchas veces no tenemos ni idea de qué estamos haciendo.

El segundo gran problema es que muchos usuarios no entienden dónde están pegando el código de personalización. En general, la mayoría de fuentes donde encontrarás estos recursos te recomiendan que los pegues en el fichero functions.php de tu tema (incluso nosotros en entradas anteriores hemos hecho esta recomendación). El motivo de proponer ese sitio es sencillo: todos los blogs de WordPress tienen un tema instalado como mínimo y, como todo tema, disponen del fichero en cuestión. Así que la forma más sencilla de volcar un fragmento de código PHP en nuestra instalación de WordPress y asegurarnos de que funcione es hacerlo en el functions.php.

Si bien es cierto que no se trata de un problema demasiado grave, mi experiencia me ha enseñado que puede tener consecuencias indeseadas. La más obvia de todas se da en el momento en que tu tema se actualiza. Cuando instalas una nueva versión de tu tema, lo que hace WordPress es eliminar la versión antigua y sustituirla completamente por la nueva. En otras palabras, WordPress se acaba de cargar el fichero functions.php con todas tus personalizaciones y lo ha sustituido por uno nuevo y limpito. Créeme cuando te digo que no te hará ninguna gracia descubrir que has perdido todas las adaptaciones que hiciste…

Esto se puede solucionar, obviamente, con una copia de seguridad. Pero esto es más un apaño que una solución de verdad; después de cada actualización tendrías que acordarte de volver a aplicar los cambios que hiciste. Y tener que depender de «acordarse de las cosas» es la fórmula perfecta para meter la pata.

¡Uy! Alguien se ha olvidado de algo.
¡Uy! Me olvidé de actualizar el fichero otra vez…

La solución

Para evitar que una actualización del tema se cargue todas las personalizaciones que le has metido a tu WordPress basta con que… ¡no las metas en el tema! Obvio, ¿no? Pero, claro, si no puedes editar el fichero functions.php, ¿dónde pones el código? Pues bastará con que crees un pequeño plugin para ello. En una entrada anterior ya te expliqué cómo crear plugins en WordPress, pero vamos a recordar los pasos básicos.

En primer lugar, deberás crear un fichero PHP (llamémosle nelio-customizations.php) con la cabecera típica de un plugin de WordPress:

A continuación, añade todo el código que quieras, tal y como puedes ver aquí:

Finalmente, súbelo al directorio /wp-content/plugins/ de tu instalación y actívalo desde el Escritorio de WordPress » Plugins (se llama Customizations):

Lista de plugins
Plugin con nuestras personalizaciones, listo para ser activado.

Consejo Extra

Si quieres que tus personalizaciones estén disponibles y que ningún usuario administrador pueda desactivar el plugin sin querer, no subas el plugin a /wp-content/plugins/. En lugar de eso, súbelo al directorio /wp-content/mu-plugins/ (¡fíjate en el fragmento mu-!). Tal y como puedes leer en el Codex, los plugins que estén en ese directorio no se pueden desactivar desde el escritorio de WordPress, basta con que estén en ese directorio para que estén activos y se ejecuten antes que cualquier otro plugin. ¡Genial!

Imagen destacada de Viktor Kern.

FlojaNo está malBienMuy bien¡Impecable! (3 votos, promedio: 4,67 de 5)
Cargando…

2 comentarios en «TruquiTrucos Dev – Personaliza tu WordPress con un plugin (y olvídate del functions.php)»

  1. Hola. muy buen articulo. Me ha servido mucho.

    Solo me queda una duda. ¿Que pasa con los child themes? es otra forma de modificar functions.php , cierto?

    Cual es la forma recomendada?
    Pugin personalizado o child theme?

    Gracias
    Saludos

    1. Sí, efectivamente crear un child theme es otra forma de realizar personalizaciones. El tema está en que todas aquellas personalizaciones que no formen parte de la apariencia de tu web no deberían estar expresadas en el tema. Es decir, cosas como tipos de contenido personalizados, opciones en el panel de administración, etc. están mejor en un plugin que en el tema.

      Otra cosa más: a veces el child theme es algo que no hemos hecho nosotros, sino que nos viene ya dado (estoy pensando en frameworks tipo genesis, donde el tema padre es el framework y el tema hijo es «el tema» que te vende el diseñador). En estos casos, de nuevo es mejor usar un plugin; de esta forma, cuando el diseñador/desarrollador saque una nueva versión del tema, podrás actualizar sin miedo a perder ningún cambio que hubieras puesto en el functions.php.

      Así que mi recomendación es: ¿afecta al tema? Ponlo en un child theme (si lo hiciste tú). ¿No es del tema o tienes un child theme que ha diseñado otra persona? Ponlo en un plugin.

Deja un comentario

No publicaremos tu correo electrónico. Los campos obligatorios están marcados con: •

He leído y acepto la Política de privacidad de Nelio Software

Al marcar la casilla de aceptación estás dando tu legítimo consentimiento para que tu información personal se almacene en SiteGround y sea usada por Nelio Software con el propósito único de publicar aquí este comentario. Contáctanos para corregir, limitar, eliminar o acceder a tu información.