Tweaking avanzado con snippets en el functions.php de WordPress

Autor: | 2018-07-30T17:55:56+00:00 Fecha: 01/08/2016|Categorías: WordPress|Comentarios: 6 comentarios

WordPress es un CMS muy fácil de utilizar con el que podemos crear sitios web completos y complejos sin necesidad de saber programar, quizás por esta razón se ha vuelto tan popular y ha conseguido reunir una comunidad tan grande de usuarios.

Aunque con WordPress un usuario puede crear una página, blog, tienda online o cualquier tipo de web, debemos tener en cuenta que para explotar al cien por cien las posibilidades que ofrece WordPress es necesario conocerlo en profundidad desde el punto de vista de saber cómo funciona.

snippets wordpressEn este artículo vamos a hablar de los snippets que existen para WordPress, una forma de modificar el comportamiento del CMS prescindiendo de plugins.
Usar código para modificar su funcionamiento no es difícil, ya que precisamente la comunidad de WordPress tiene publicada en internet mucha información sobre este tipo de configuraciones y funcionalidades.

En este artículo vamos a empezar por ver lo que es un snippet y su funcionamiento, posteriormente vamos a mostrar algunos snippets PHP para utilizar en WordPress, seguidos por su correspondiente explicación.
Normalmente este tipo de artículos no enseñan el funcionamiento de los snippets del functions.php para WordPress, pero en este caso nosotros vamos a explicar todo punto por punto, aunque si eres usuario principiante o medio puede que al principio no te enteres de mucho.

 

¿Qué es un snippet y para qué sirve? 

Un snippet es un pequeño fragmento de código reusable que utilizan los desarrolladores para mejorar y añadir funcionalidades a un proyecto WordPress.
Existen snippets para diferentes tecnologías: CSS, PHP, JS…etc. Nosotros vamos a explicar cómo se crean los snippets PHP que se suelen utilizar en WordPress, dónde se añaden y para que los podemos usar dentro una web hecha con WordPress.

snippets wordpress¿Qué podemos conseguir con esto? Definir características del theme o plantilla, widgets, crear tipos de contenido y taxonomías adicionales, personalizar el dashboard y sus funcionalidades, etc…
Al fin y al cabo la mayoría de snippets de código que podemos usar individualmente, son los trozos de código modulares que se utilizan en los desarrollos más grandes como por ejemplo themes o plugins.

 

¿Dónde y cómo se crean los snippets del functions.php?

En la estructura de archivos de los themes o plantillas para WordPress nos encontraremos el archivo functions.php. Si no es así, podemos crearlo nosotros mismos, ya que no es obligatorio que exista.
Teóricamente se utiliza para declarar nuevas clases y funcionalidades en WordPress, pero en nuestro caso lo vamos a utilizar para variar el comportamiento por defecto de WordPress.

Algunos elementos tan básicos de WordPress como los widgets se pueden crear simplemente declarándolos en el functions.php, es decir, podemos crear nuevos widgets personalizados y completamente usables creándolos usando hooks, actions o filtros.

Un hook es un punto “estratégico” o un “evento” dentro de nuestro código que nos permite ejecutar determinados procesos a través de una acción o un filtro dentro de la secuencia de carga de WordPress.
Nos permitirá modificar el comportamiento de este CMS sin tocar realmente el código fuente del núcleo de WordPress, simplemente añadiendo un código que modifica el comportamiento del núcleo.

Para definir un snippet y “engancharlo” al hook podemos utilizar dos tipos de llamadas: add_action para las acciones y add_filter para los filtros.

Un action o acción nos permite crear funciones nuevas que añaden código al proyecto. Su estructura es la siguiente:

  • nombre_del_hook‘: Nombre de la acción.
  • mi_funcion‘: El nombre que le hemos asignado a nuestra función.
  • [Prioridad]: Es un valor opcional. Se utiliza para especificar la prioridad de ejecución de una función asociada al mismo hook. Los valores más bajos tienen preferencia.
  • Parámetros: Es un valor entero opcional. Por defecto es 1. Indica el número de parámetros que acepta la función que asociamos al hook.

Un filter o filtro sirve para modificar una funcionalidad ya existente en nuestro proyecto. Su estructura es idéntica a la de las acciones, pero substituyendo add_action por add_filter.

La mejor manera de entender estos conceptos es con ejemplos, precisamente lo que vamos a mostrar a continuación en este artículo.

 

Ejemplos de code snippets para el functions.php de WordPress

Vamos a empezar por el principio con algunos ejemplos simples de código que puedes insertar en el functions.php del theme activo en WordPress.

Antes de añadir alguno de los siguientes ejemplos, es recomendable que hagas una copia de seguridad de tu fichero functions.php. Si no lo tienes puedes crearlo en la carpeta raíz de tu theme activo actualmente.

NOTA PARA PRINCIPIANTES: Si creas un archivo functions.php nuevo recuerda que no lo puedes dejar totalmente vacío, necesitas indicar el inicio y fin del código PHP:

Debes tener en cuenta que estos snippets deben ser usados solo cuando los necesitas, al igual que los plugins, no tiene ningún sentido aplicarlos todos al mismo tiempo a una instalación de WordPress sin necesidad.

 

Personalizar el login y el panel de administración de WordPress

Existen plugins para modificar la pantalla de login y el panel de administración de una instalación de WordPress, pero muchas cosas podemos hacerlas directamente desde el código del functions.php del theme activo.
En este caso vamos a mostrar unos ejemplos que podemos usar.

Con la siguiente función puedes modificar el mensaje de bienvenida de la pantalla de login para poner el mensaje que tú quieras.
Para realizar esto hay que utilizar el filtro “login_message” que “filtra” el mensaje que aparece en la cabecera de ese formulario y permite devolver código HTML.

functions.php wordpress

Ahora vamos a mostrar cómo podemos cambiar el logo por defecto de la pantalla de login de WordPress.
Lo primero que vamos a hacer es crear una carpeta nueva en el raíz del theme que se llame “images” (en el caso de que no exista) y subimos por FTP nuestra nueva imagen.

Para acceder a la dirección de la plantilla en uso vamos a utilizar la función get_bloginfo() con el parámetro “template_directory”.

Para modificar la cabecera del formulario utilizaremos la acción login_head.

Quedaría de la siguiente manera:

snippets wordpressComo puedes ver, hemos colocado el logo de Raiola Networks en la pantalla de login de WordPress con una simple función en el functions.php del theme activo.

 

Vamos a mostrar otro ejemplo más, vamos a sustituir el logo de WordPress del back-end por uno personalizado.

Lo primero que tenemos que hacer es crear una imagen PNG de 20×20 y la subimos a la carpeta /images/ que hemos creado en uno de los ejemplos anteriores.
La acción que utilizamos es wp_before_admin_bar_render que permite modificar el objeto que contiene la barra de herramientas del panel de administración.

La función que permite esto es la siguiente:

snippets wordpress

Ahora vamos a cambiar el mensaje de “Creado por WordPress” por el de “Raiola Networks Dashboard” (por poner un ejemplo) modificando el contenido del pie.
Para ello utilizamos el filtro “admin_footer_text”:

snippets wordpress

 

Insertar Google Analytics con el functions.php

En este blog hemos hablado repetidas veces sobre cómo implementar el código de Google Analytics en un WordPress, de hecho, hemos listado plugins que sirven específicamente para instalar el código de Google Analytics en WordPress.

¿Por qué querríamos insertar el tracking de Google Analytics desde el functions.php del theme activo si podemos hacerlo con un plugin? La respuesta es simple, para ahorrar un plugin.

El código que debes usar en el functions.php es el siguiente:

Como puedes ver hay dos hooks. La diferencia entre ellos es que el primero añade el código en la cabecera y el segundo en el pie, pero CUIDADO, no lo añadas tanto en el footer como en la cabecera, ya que sino los resultados estarán duplicados y no se realizara bien la contabilización de estadísticas.

 

Cambiar el avatar por defecto de WordPress con el functions.php

¿Estás aburrido de que en tu blog aparezca siempre el clásico avatar por defecto de WordPress? Pues… ¡vamos a cambiarlo!

Dentro del panel de administración nos dirigimos al menú de Ajustes > Comentarios. Ahí tenemos una lista de todos los avatares disponibles que podemos poner por defecto para los usuarios que comenten en nuestro blog.

snippets wordpressLa función que aparece a continuación añade un nuevo avatar a la lista del back-end de WordPress.
Para ello, tenemos que crear una nueva entrada en la variable $avatar_defaults de la siguiente manera:

wordpress functions.phpEn este listado podrías poner cualquier imagen que quisieras sin ningún tipo de limitación, siempre y cuando los tamaños se adapten.

 

Eliminar la versión de WordPress del HTML

En este caso vamos a mostrar como eliminar elementos mediante snippets en el functions.php de WordPress.
El primer ejemplo que vamos a ver, es para eliminar la información relativa a la versión de WordPress que se incluye en el código HTML.
Que se muestre la versión del CMS utilizada es un fallo de seguridad importante y puede dar lugar a que los bots encuentren vulnerabilidades en nuestro sitio web.

¿Cómo eliminamos esta información de nuestro código fuente? Podemos hacerlo utilizando remove_action.

remove_action elimina funciones de una acción específica (action hook). La sintaxis es muy sencilla:

remove_action( ‘nombre_del_hook’, ‘mi_funcion’, [prioridad]);

  • ‘nombre_del_hook’: Nombre de la acción que queremos eliminar.
  • ‘mi_funcion’: El nombre que le hemos asignado a la función que queremos eliminar.
  • Prioridad: Es un valor opcional. Se utiliza para especificar la prioridad. El valor por defecto es 10. Este campo funciona de la misma manera que en los filtros y las acciones vistas con anterioridad.

Como la información que queremos borrar se encuentra en la cabecera de la web el nombre del hook es: wp_head.

Ahora solo tenemos que ir colocando la prioridad (en el caso de que se la queramos dar) y la función que corresponda. Por ejemplo:

wordpress functions.phpDel código HTML no solo podemos eliminar la versión de WordPress, sino que podemos borrar otro tipo de información que realmente no aporta nada en condiciones normales y que pueden hacer que nuestro WordPress sea atacado muy fácilmente.

A continuación, puedes ver los ejemplos de código HTML generado que se puede borrar:

¿Todo esto que puedes ver en el snippet anterior te suena de algo? Si eres usuario más o menos acostumbrado a WordPress y a sus plugins te habrás dado cuenta de que esto puede eliminarse también mediante el plugin Yoast SEO.

 

Lugares para obtener snippets para WordPress

Sería imposible listar en un artículo todos los snippets que podemos encontrar en Internet para WordPress, y mucho menos mantenerlos actualizados.
No solo podemos encontrar snippets PHP para modificar las funcionalidades de WordPress, sino que también podemos encontrar snippets para plugins como WooCommerce o Easy Digital Downloads.

A continuación, vamos a listar una serie de sitios web donde podrás encontrar snippets o trozos de código preparado para usar:

  • wpsnipp.com: Es un sitio web bastante grande, en formato blog, pero en el que resulta realmente fácil buscar snippets. El sitio web es este: http://wpsnipp.com/
  • wpfunction.me: Se trata de un sitio en formato repositorio que contiene trozos de código para WordPress, no solo para el functions.php, pero son trozos de código útiles en cualquier instalación de WordPress. El sitio web es este: http://www.wpfunction.me/

 

Snippets para el wp-config.php de WordPress

El functions.php de WordPress no es el único lugar donde podemos insertar código, ya lo hemos visto en otros artículos donde hablábamos de tweaking avanzado para el wp-config.php de WordPress.

En los sitios web mencionados anteriormente seguramente encuentres también parámetros y funciones para insertar directamente en el wp-config.php de WordPress.

Si quieres ver un listado de parámetros aceptados por el wp-config.php puedes ver el siguiente artículo en nuestro blog: https://raiolanetworks.es/blog/tweaking-avanzado-del-wp-config-php-de-wordpress/

[Total: 8 Promedio: 4.1]
Ángela Piñeiro
Soy graduada en Ingienería Informática y formo parte del departamento de Web y Marketing Digital de Raiola Networks.

Utilizamos cookies propias y de terceros para obtener información estadística, mostrar publicidad personalizada a través del análisis de tu navegación, así como para interactuar en redes sociales. Si continúas navegando, consideramos que aceptas nuestra Política de cookies. ACEPTAR

Aviso de cookies