Wordpress
¿Qué es?
Componentes principales
¿Qué son exactamente los hooks de WordPress?
Action Hooks
do_action()
Filter Hooks
apply_filters()
Jerarquía de plantillas
4. WORDPRESS
¿Qué es?
Es un sistema de gestión de contenidos o CMS
(por sus siglas en inglés, Content Management
System) enfocado a la creación de cualquier tipo
de sitio, aunque ha alcanzado una gran relevancia
en la creación de blogs
6. IN THE BOX
• Páginas
• Entradas (Blog)
• Categorías
• Tags
• Usuarios
• Roles
• Permalinks (SEO)
• Plugins
• Temas
7. PARA EL DESARROLLADOR
Si estás pensando en usar WordPress y queres
crear plugins o desarrollar temas entonces tenes
que saber qué son los hooks y aprender a
dominarlos.
Es un concepto que puede ser un poco intimidante
para aquellos que comienzan (costo de
aprendizaje medio).
8. ¿QUÉ SON EXACTAMENTE LOS
HOOKS DE WORDPRESS?
Hook (gancho) es un termino genérico en
WordPress, que se usa como referencia para
poder inyectar código propio y poder agregar
comportamientos o cambiar el funcionamiento
nativo de WordPress.
9. ¿DÓNDE SE DECLARAN?
Un hook puede ser declarado en dos lugares:
1. Dentro de un tema o tema hijo en: function.php
2. Directamente en un plugin
10. TIPOS DE HOOKS
1. Acciones (Actions)
no posee un retorno
2. Filtros (Filters)
siempre retorna algo
11. ACTION HOOKS
Una acción te permite ejecutar tus propias
funciones en un lugar específico dentro de la línea
de tiempo de ejecución de WordPress, Plugin o
Tema para que puedas agregar nuevas
funcionalidades o personalizaciones.
12. AGREGANDO UNA ACCIÓN
La forma mas genérica de representar una acción es la
siguiente:
add_action($hook, $function_to_add, $priority,
$accepted_args);
13. DETALLANDO
add_action
Es la función nativa de WordPress para agregar una acción.
$hook
Es el nombre de la acción en donde inyectaremos nuestro código.
$function_to_add
Es el nombre de la función que deseamos ejecutar.
$priority
Es el orden de ejecución que queremos asignarle.
$accepted_args
Es la cantidad de parámetros aceptados.
14. EN DÓNDE SE AGREGAN
ESAS FUNCIONES
Se encolan en una variable global llamada $wp_filter (array)
dónde se indica para cada hook y prioridad, el nombre de las
funciones a ejecutar y su cantidad de parámetros aceptados.
array(‘hook’ =>
array(‘prioridad’ =>
array( ‘funcion_1’,
‘funcion_2’
‘funcion_3’
)
)
)
15. EJEMPLO
Veamos un ejemplo real de como usar un hook bastante común,
llamado wp_head, usado por muchos temas y plugins para
agregar información entre los tags html de la página, en este
ejemplo vamos a añadir un meta tag.
Queremos agregar un meta tag description con el siguiente valor
<meta name=“description” content=“PHPDay description para
Wordpress“ />
16. AGREGANDO NUESTRA ACCIÓN
Para agregar una accion basta con conocer el nombre del
hook y el nombre de nuestra función/acción
20. FILTER HOOKS
Los filtros son funciones a las cuales WordPress
le pasa información (al menos 1 parámetro) y debe
retonrar algun valor.
De esta forma un filtro te permite modificar valores
antes de que sean utilizados.
add_filter($hook, $function_to_add, $priority,
$accepted_args);
21. DETALLANDO
add_filter
Es la función nativa de WordPress para agregar un filtro.
$hook
Es el nombre de la acción en donde inyectaremos nuestro código.
$function_to_add
Es el nombre de la función que deseamos ejecutar.
$priority
Es el orden de ejecución que queremos asignarle.
$accepted_args
Es la cantidad de parámetros aceptados.
22. EJEMPLO FILTER
Queremos modificar todos los titulos de nuestras paginas en
Wordpress.
Para ello vamos a usar la función wp_title() que imprime el
tag title y es invocada dentro del archivo header.php de un
tema.
Objetivo:
Agregar al final de cada página el texto:
“ | Powered by PHPDay”
30. EL LOOP
Otro concepto muy importante que es necesario dominar es
el loop de Wordpress.
<?php
// El Loop
if (have_posts()) : while (have_posts()) : the_post();
...
endwhile; else:
...
endif;
?>
31. FUNCIONES DENTRO
DEL LOOP
• the_title()
• the_content()
• the_permalink()
• the_ID()
• the_author()
• the_category()
32. PREGUNTAS ???
WordPress
mucho más que un CMS para
Blogs!!!
Daniel Bertinat
daniel.bertinat@gmail.com
https://uy.linkedin.com/in/danielbertinat
http://2015.phpday.uy/