Descripción
En esta lección, aprenderás que los temas de WordPress suelen incluir un archivo llamado functions.php, que es donde se pueden añadir características únicas y funciones personalizadas. Sin embargo, los plugins también están destinados a añadir características y funcionalidades a tu sitio. ¿Cuándo deberías usar functions.php para añadir tu código personalizado y cuándo deberías usar plugins? Esta lección te ayudará a comprender la diferencia entre ambos.
Objetivos
Después de completar esta lección, podrás:
- Reconocer e identificar los usos de functions.php en comparación con el uso de plugins para añadir funcionalidades.
- Explicar cuándo usar y cuándo no usar funciones.
Habilidades necesarias
Estarás mejor preparado para realizar esta lección si tienes:
- Conocimientos básicos sobre cómo crear un tema y un plugin
- Familiaridad básica con PHP y el código de WordPress
Preguntas de preparación
- ¿Estás familiarizado con la instalación y activación de temas mediante el escritorio de WordPress?
- ¿Dispondrás de un sitio de WordPress de prueba alojado local o remotamente para usar durante la clase?
- ¿Te sientes cómodo usando un editor de texto para editar código?
- ¿Has añadido alguna vez funcionalidades personalizadas a tu sitio de WordPress?
- ¿Estás familiarizado con la jerarquía de archivos de los temas de WordPress?
Diapositivas
- No hay diapositivas para este plan de lección
Materiales necesarios
- WordPress instalado localmente
- Dos o más temas de WordPress instalados
Notas para el presentador
- Lo más fácil es que los estudiantes trabajen con una copia de WordPress instalada localmente. Reserva algo de tiempo antes de la clase para ayudar a los estudiantes a instalar WordPress localmente si lo necesitan. Para obtener más información sobre cómo instalar WordPress localmente, visita Instalación en un servidor local.
- La respuesta preferida a las preguntas de evaluación es “sí”. Los participantes que respondan “no” a todas las preguntas quizá no estén preparados para esta lección.
Esquema de la lección
- Presentar el archivo functions.php
- Mostrar la diferencia entre functions.php y un plugin
- Describir cuándo es buena idea usar functions.php
- Dar ejemplos de elementos que deberían y no deberían añadirse a functions.php
- Mostrar la diferencia entre implementar functions.php en temas de bloques y temas clásicos
Ejercicios
Añade funcionalidades únicamente a functions.php.
1. Añade la funcionalidad de longitud de extracto personalizada al archivo functions.php de tu tema activo insertando el siguiente código en el archivo:
function themename_custom_excerpt_length( $length ) {
return 40; //number of words in excerpt
}
add_filter('excerpt_length','themename_custom_excerpt_length', 99 );
2. Crea una entrada de blog de prueba con un extracto largo. Verifica que funcione correctamente y, después, cambia de tema.
3. Observa que la funcionalidad ya no existe porque se colocó en el archivo functions.php de un tema específico.
Evaluación
¿Cuál de los siguientes elementos no debería estar en function.php?
- Estilos de la barra lateral
- Favicon
- Fondo personalizado
Respuesta: 2. Favicon
Recursos adicionales
Ejemplo de lección
Introducción: ¿Qué es un archivo functions.php?
El archivo functions.php se utiliza para añadir, eliminar o cambiar de cualquier otra forma los comportamientos predeterminados de WordPress. El archivo se encuentra dentro de la carpeta del tema. functions.php se comporta como un plugin de WordPress, lo que permite al autor añadir características y funcionalidades personalizadas a un sitio de WordPress. Un tema hijo puede tener su propio functions.php. Sin embargo, a diferencia de style.css, el archivo functions.php de un tema hijo no reemplaza el functions.php del tema padre. En su lugar, se carga además del functions.php del tema padre. (lee más aquí)
¿En qué se diferencia functions.php de un plugin?
Dado que functions.php y los plugins permiten crear funcionalidades personalizadas y modificar el comportamiento predeterminado de WordPress, puede resultar un poco confuso entender cuándo usar functions.php y cuándo crear o usar un plugin para añadir funcionalidades. Al analizar ambos métodos con más detalle, podrás comprender mejor cuándo es apropiada cada solución. En general, los plugins son módulos independientes que se pueden descargar e instalar en tu sitio web de WordPress. El propósito de un plugin es ampliar la funcionalidad de WordPress o añadir nuevas características. No es necesario modificar el tema activo para activar los plugins. En cambio, los temas son un conjunto de archivos diseñados para modificar el aspecto de WordPress. Aunque los temas pueden incluir funcionalidades personalizadas (tipos de contenido personalizados, un panel de configuración visual, etc.), por lo general seleccionas los temas según la forma en que modificarán la experiencia del usuario en tu sitio web. Las características básicas que definen y distinguen a los plugins de WordPress del archivo functions.php son:
Un plugin de WordPress…
- requiere un texto de encabezado específico y único.
- se almacena en wp-content/plugins, normalmente en un subdirectorio.
- se ejecuta únicamente cuando se activa individualmente mediante el panel de “plugins”.
- se aplica a todos los temas.
- debería tener un único propósito; por ejemplo, convertir entradas en páginas, ofrecer funciones de optimización para motores de búsqueda o ayudar con las copias de seguridad.
Un archivo functions.php…
- no requiere un texto de encabezado único.
- se almacena con cada tema en el subdirectorio del tema dentro de wp-content/themes.
- se ejecuta únicamente cuando se encuentra en el directorio del tema activado actualmente.
- se aplica únicamente a ese tema. Si se cambia el tema, se pierde la funcionalidad.
- puede contener numerosos bloques de código utilizados para muchos propósitos diferentes.
Cuándo usar functions.php
Podríamos deducir que, si la funcionalidad personalizada está relacionada con la presentación visual, debería residir en functions.php, y si está relacionada con el comportamiento del sitio, debería almacenarse en un plugin. Sin embargo, técnicamente es posible almacenar personalizaciones de presentación visual en un plugin, así que ¿cómo determinamos cuál es la mejor opción? La respuesta es sorprendentemente sencilla. La pregunta que debemos hacernos es: ¿debería esta funcionalidad estar vinculada a un tema específico o no? Dado que functions.php reside en la carpeta de un tema, ese tema debe estar activo para que cualquier funcionalidad personalizada funcione. Sin embargo, si dicha funcionalidad personalizada se almacenara en un plugin, podrías cambiar de tema y conservar la funcionalidad personalizada. Por lo tanto, la mejor manera de determinar cómo incluir tu código personalizado es preguntarte si la funcionalidad es específica de un tema o si es compatible con el contenido o la estructura del sitio, independientemente del tema habilitado. Por ejemplo, quizá quieras tener una longitud de extracto única para las entradas en un tema específico, basada en su diseño y maquetación; por lo tanto, la funcionalidad del extracto debería añadirse a functions.php. Si quieres implementar un enlace de “seguir leyendo” para todas las entradas, independientemente del tema que uses, esta función debería añadirse como plugin.
Elementos que podrían incluirse en functions.php:
- formato del contenido
- funcionalidades de encabezado y pie de página específicas del tema
- hooks de WordPress para cambiar la salida; por ejemplo, usar el filtro
excerpt_lengthpara cambiar la longitud del extracto de una entrada - código que habilita la compatibilidad del tema con miniaturas de entradas, formatos de entrada y menús de navegación
- funciones que quieras reutilizar en varios archivos de plantilla del tema
Elementos que no deberían incluirse en functions.php:
- funcionalidades relacionadas con el SEO
- scripts de Google Analytics
- tipos de contenido y taxonomías personalizados
Implementación de functions.php en temas de bloques y temas clásicos
Los temas clásicos de WordPress requieren que el desarrollador añada compatibilidad con las características de WordPress. Un archivo functions.php típico de un tema clásico incluirá una función para configurar la compatibilidad con estas características, utilizando la función add_theme_support() (también conocida como ‘compatibilidades del tema’).
En un tema de bloques, ciertas compatibilidades del tema están habilitadas de forma predeterminada y no es necesario habilitarlas explícitamente. Además, algunas compatibilidades del tema se habilitan al incluir una configuración en el archivo theme.json de un tema de bloques. La configuración de theme.json tiene prioridad sobre una característica añadida mediante add_theme_support(). Por ejemplo, incluir la configuración settings.layout en theme.json habilitará la compatibilidad del tema align-wide.