Hooks del init.php
init.php es un fichero que se encuentra dentro del directorio principal de Genesis, concretamente en la ruta:
themes/genesis/lib/init.php
Es el primer archivo que se carga cuando ejecutamos Genesis, por tanto las funciones que «enganchemos» aquí, serán las primeras que se carguen en el arranque de nuestra web.
Existen 4 hooks principales dentro de init.php:
- genesis_pre: Es el primer hook que puedes usar en Genesis, ninguna otra función de Genesis se carga antes de este.
- genesis_pre_framework: Este hook se ejecuta justo después de que Genesis declare las constantes del framework. Por lo que si tu función depende de alguna de estas constantes, deberías usarlo aquí en lugar de en genesis_pre.
- genesis_init: Se ejecuta después de que se cargue el framework, pero antes de que se cargue la configuración de los themes. Úsalo si tus funciones necesitan cargarse antes del setup del theme, pero dependen de alguna función del framework.
- genesis_setup: Se usa para definir la configuración del theme.
Si abrimos el archivo podemos localizarlos facilmente por los do_action()
do_action(‘genesis_pre’) es el hook o gancho, que al engancharlo con tu función:
add_action('genesis_pre', mi_funcion);
Sería el equivalente a escribir mi_funcion() en esa parte del archivo init.php, pero sin necesidad de tener que editar init.php. Recuerda que nunca debes modificar un archivo de Genesis directamente, pues todos los cambios se perderán al actualizar a una nueva versión.
Hooks del header.php
Existe 2 archivos header.php, uno situado en themes/genesis/header.php y otro situado en themes/genesis/lib/structure/header.php con hooks que conectan directamente con el primero.
Hooks que podemos encontrar genesis/header.php son:
- genesis_doctype: Ejecuta tus funciones justo depués del Doctype:
<!DOCTYPE html>
<html lang="es">
<head itemscope itemtype="https://schema.org/WebSite">
<meta charset="UTF-8" />
2. genesis_title: Se antepone a la etiqueta <title> por defecto del documento, por ejemplo:
add_action('genesis_title', 'mi_titulo');
function mi_titulo(){
echo "<title>Mi título</title>";
}
Coloca «Mi título» por encima del título por defecto, aunque no lo sustituye:
En este caso prevalece el primer <title>
3. genesis_meta: Muy útil para añadir tus propias meta etiquetas. Normalmente las opciones de SEO de Genesis ya añaden las meta etiquetas necesarias, pero si necesitas alguna específica para un servicio o red social concreta, puedes añadirla manualmente aquí.
add_action('genesis_meta', 'meta_descripcion');
function meta_descripcion(){
echo "<meta description='Mi meta descripción' />";
}
4. genesis_before: Añade tus funciones justo antes de la esctructura web de Genesis, por encima de la cabecera. Por ejemplo:
add_action('genesis_before', 'mi_encabezado');
function mi_encabezado(){
echo '<h2>Mi encabezado</h2>';
}
5. genesis_before_header: Muy parecido a genesis_before, pero a continuación de algunos a links de Génesis. Se ubica justo antes de la etiqueta de apertura del header (<header>).
6. genesis_header: Engloba todo lo que hay dentro de la estructura <header></header> del documento. A este hook conectan otros hooks del lib/structure/header.php, como el genesis_site_title, genesis_site_description y genesis_header_right. Los veremos a continuación.
7. genesis_after_header: Se ubica justo a continuación de la etiqueta de cierre del header (</header>).
Hooks de genesis/lib/structure/header.php:
Como comentamos en el punto anterior, dentro de este header podemos encontrar hooks que conectan directamente con genesis_header, como pueden pueden ser:
- genesis_site_title: Ubicado en el título del sitio.
- genesis_site_description: Ubicado en la descripción del sitio.
- genesis_header_right: Ubicado en la cabecera derecha del sitio (donde suelen ir los menús principales en los child-themes de Genesis).
add_action('genesis_site_title', 'mi_site_title');
add_action('genesis_site_description', 'mi_site_description');
add_action('genesis_header_right', 'mi_header_right');
function mi_site_title(){
echo "Mi site title";
}
function mi_site_description(){
echo "Mi site description";
}
function mi_header_right(){
echo "Mi header right";
}
add_action('genesis_after_header', 'mi_after_header');
function mi_after_header(){
echo "Mi after header";
}
Hooks del framework.php
A partir de aquí vamos a ir viendo los considerados «hooks físicos«, pues cada uno de ellos tiene su propia ubicación dentro del tema, por lo que son bastante intuitivos de gestionar.
Dentro de framework.php encontramos 7 hooks:
- genesis_before_content_sidebar_wrap
- genesis_before_content
- genesis_before_loop
- genesis_loop
- genesis_after_loop
- genesis_after_content
- genesis_after_content_sidebar_wrap
Entre ellos se encuentra problablemente el hook más importante de Genesis, el genesis_loop, que usaremos para la mayoría de tareas de programación que tengan que ver con la consulta y carga de contenidos.
framework.php se encuentra en la ruta genesis/lib/framework.php donde podemos ver los hooks mencionados.
- genesis_before_content_sidebar_wrap: Se ubica justo antes del div content-sidebar-wrap (fuera del contenedor principal de la entrada o página).
add_action('genesis_before_content_sidebar_wrap', 'mi_genesis_before_content_sidebar_wrap');
function mi_genesis_before_content_sidebar_wrap(){
echo "<b>Este es el genesis_before_content_sidebar_wrap</b>";
}
2. genesis_before_content: Se ubica dentro del div content-sidebar-wrap justo antes del aside o barra lateral (si la hubiera):
add_action('genesis_before_content', 'mi_genesis_before_content');
function mi_genesis_before_content(){
echo "<b>Este es el genesis_before_content</b>";
}
3. genesis_before_loop: Nos acercamos al loop de genesis, el momento en el que se carga el contenido de una entrada o página. Este hook se ubica justo antes.
add_action('genesis_before_loop', 'mi_genesis_before_loop');
function mi_genesis_before_loop(){
echo "<b>Este es el genesis_before_loop</b>";
}
4. genesis_loop: Este hook es usado por el propio framework de Génesis para iniciar el loop general (listados de posts, mostrar el contenido de un post…). Dedicaremos un apartado a los hooks que podemos encontrar dentro del propio loop.
5. genesis_after_loop: No tiene misterio, se ubica justo después del loop, una vez que ha cargado todo el contenido (incluso la caja de comentarios de una entrada):
add_action('genesis_after_loop', 'mi_genesis_after_loop');
function mi_genesis_after_loop(){
echo "<b>Este es el genesis_after_loop</b>";
}
6. genesis_after_content: Al contrario que su homónimo, este se ubica al final del content o sidebar si existiera.
add_action('genesis_after_content', 'mi_genesis_after_content');
function mi_genesis_after_content(){
echo "<b>Este es el genesis_after_content</b>";
}
La ubicación puede ser un poco confusa dependiendo de cómo esté configurado el sidebar. Pero si observamos el código HTML, vemos cómo se ubica justo al final de la etiqueta aside del sidebar: