PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
Creación de un plugin para WordPress
1. Creación
de
un
plugin
para
WordPress
Dani
Reguera
Mondragon
Unibertsitatea
dreguera@mondragon.edu
h=ps://twi=er.com/dreguera
h=ps://linkedin.com/in/danireguera
2. ¿Qué
es
un
plugin
y
para
qué
sirve?
§ Los
Plugins
son
herramientas
que
exKenden
la
funcionalidad
del
siKo
desarrollado
en
WordPress
§ Son
fragmentos
de
código
en
PHP
que
interactúan
con
el
kernel
de
WordPress
para
darnos
otro
Kpo
de
funcionalidades
§ Existen
plugins
tanto
de
pago
como
gratuitos
2
3. ¿Qué
es
un
plugin
y
para
qué
sirve?
§ Existen
infinidad
de
plugins
a
día
de
hoy
tanto
en
repositorios
oficiales
como
en
otras
fuentes
externas.
§ Repositorio
oficial
de
WordPress:
¨ h=ps://wordpress.org/plugins/
§ Existe
gran
variedad
de
los
mismos,
categorizados
por
temáKcas,
desarrolladores,
etc..
3
4. Resumiendo
§ “Un
plugin
de
WordPress
es
un
programa,
o
un
conjunto
de
una
o
varias
funciones,
escritas
en
el
lenguaje
de
script
PHP,
que
añaden
un
conjunto
específico
de
caracterísKcas
o
servicios
a
una
web
WordPress,
que
pueden
integrarse
perfectamente
en
la
web
uKlizando
puntos
de
acceso
y
métodos
provistos
por
una
Interfaz
de
Programación
de
Aplicaciones
(API)
WordPress.”
Wordpress.org
4
5. Primer
paso
para
la
creación
de
un
plugin
§ Lo
primero
que
hay
que
hacer
es
buscar
en
los
repositorios
de
WordPress
para
saber
si
alguien
ya
ha
creado
el
plugin
que
se
ajuste
a
sus
necesidades.
§ Si
no
hay
ninguno
que
se
ajuste
a
nuestras
necesidades,
entonces
si
que
lo
haremos
desde
cero.
§ No
hay
que
reinventar
la
rueda
5
6. Nombre
del
plugin
§ ¿Qué
va
a
hacer
nuestro
plugin?
§ Mirar
en
el
repositorio
oficial
que
no
existe
el
mismo
nombre.
§ Mirar
en
Google/Yahoo
que
no
existe
un
plugin
con
ese
nombre.
§ Pensar
un
nombre
en
función
de
lo
que
va
a
hacer.
¨ P.ej:
Plugin
ejemplo
de
Garaia-‐>
Garaia
Plugin
§ A
veces
no
somos
muy
creaKvos…
6
7. Creando
los
archivos
(Fichero
único)
§ El
siguiente
paso
es
crear
un
archivo
PHP
con
un
nombre,
teniendo
en
cuenta
el
nombre
que
hemos
elegido
para
el
plugin.
¨ Plugin
Garaia
-‐>
PluginGaraia.php
§ ¡OJO!
Los
plugins
se
guardan
en
la
carpeta
/
wp-‐conten/plugins
por
lo
que
no
puede
haber
dos
ficheros
con
el
mismo
nombre.
7
8. Creando
los
archivos
(Varios
ficheros)
§ Puede
darse
el
caso
que
tengamos
varios
ficheros
dentro
del
plugin,
JS,
CSS,
imágenes…
§ ¡OJO!
Siempre
ha
de
haber
al
menos
un
fichero
PHP
§ Si
hay
varios
archivos,
lo
aconsejable
es
que
la
carpeta
y
el
archivo
php
principal
se
llamen
igual.
¨ PluginGaraia:
Nombre
de
la
carpeta
¨ PluginGaraia.php:
Nombre
del
archivo
php
principal.
§ En
este
caso
también
se
guardan
detron
del
directorio
/wp-‐content/plugins.
8
9. Archivo
readme.txt
§ No
solo
si
vamos
a
alojar
nuestro
plugin
en
WordPress,
tenemos
que
crear
un
archivo
readme
donde
damos
la
información
necesaria
de
nuestro
plugin.
§ Es
algo
muy
importante
y
de
gran
ayuda
para
dar
a
conocer
nuestro
desarrollo.
§ Tenemos
que
seguir
el
formato
que
nos
da
WordPress:
¨ h=ps://wordpress.org/plugins/about/readme.txt
9
11. Información
estándar
del
plugin
§ Las
primeras
líneas
del
fichero
php
han
de
contener
la
cabecera
estándar
de
información
del
plugin
§ Esta
cabecera
permite
a
WordPress
reconocer
que
el
plugin
existe,
y
ponerlo
en
la
pantalla
de
gesKón
para
que
pueda
ser
acKvado,
cargado
y
ejecutar
sus
funciones.
§ Sin
esta
cabecera,
el
plugin
no
podrá
ser
acKvado
ni
funcionar.
11
12. Información
estándar
del
plugin
§ El
mínimo
de
información
que
WordPress
necesita
para
reconocer
su
plugin
es
el
nombre
del
mismo.
§ El
resto
de
la
información
se
uKlizará
para
crear
la
tabla
de
plugin
en
la
pantalla
de
gesKón
de
plugins.
§ El
orden
de
las
líneas
no
es
importante.
12
13. Ejemplo
de
cabecera
<?php
/*
Plugin Name: Garaia Plugin
Plugin URI: http://www.mondragon.edu
Description: Plugin de ejemplo para el curso de Garaia
Enpresa Digitala
Version: 1.0
Author: Dani Reguera
Author URI: http://github.com/dreguera
License: GPL2
*/
?>
13
14. Licencia
del
plugin
§ La
mayoría
de
los
plugins
uKlizan
licencia
GPL2
o
licencias
compaKbles
con
GPL2.
§ Hay
que
tener
en
cuenta
la
licencia
a
la
hora
de
manipular
o
instalar
o
reprogramar
un
plugin
ya
existente.
§ Normalmente
añadimos
esas
líneas
en
la
cabecera.
§ Para
más
info:
¨ h=p://www.gnu.org/licenses/old-‐licenses/gpl-‐2.0.html
14
15. Licencia
del
plugin
<?php
/* Copyright 2014 Dani_Reguera (email : dreguera@mondragon.edu)
This program is free software; you can redistribute it and/or
modify
it under the terms of the GNU General Public License, version 2,
as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
*/
?>
15
16. Licencia
del
plugin
<?php
/* Copyright 2014 Dani_Reguera (email : dreguera@mondragon.edu)
This program is free software; you can redistribute it and/or
modify
it under the terms of the GNU General Public License, version 2,
as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
*/
?>
16
17. Ganchos
o
hooks
en
WordPress
§ ¿Qué
son
los
hooks
en
WordPress?
¨ Los
hooks
son
parte
de
la
forma
en
que
WordPress
está
programado,
y
su
principal
función
es
la
de
permiKr
cambiar
prácKcamente
cualquier
aspecto
de
la
plataforma
sin
necesidad
de
tocar
su
código
fuente
original.
¨ Conseguimos
interactuar
con
el
core
de
WordPress
sin
tener
que
hacer
desarrollos
directos
sobre
el
mismo.
17
18. Ganchos
o
hooks
en
WordPress
§ Los
ganchos
son
extremadamente
úKles
para
modificar
los
contenidos
de
tu
página
web.
§ Los
ganchos
te
permiten
realizar
cambios
mucho
más
avanzados.
§ Podemos
uKlizar
los
ganchos
sin
necesidad
de
crear
temas
hijos
o
de
modificarlos.
§ Los
hooks
se
implementan
mediante
funciones
php
por
lo
que
hay
que
“picar”
código
18
19. ¿Cómo
funcionan
los
hooks
en
WordPress?
§ La
forma
en
que
funcionan
los
ganchos
de
plugin
es
que
en
diferentes
instantes
mientras
WordPress
está
corriendo,
WordPress
comprueba
si
algún
plugin
ha
registrado
alguna
función
para
ejecutarse
en
ese
preciso
instante,
y
si
es
así,
ejecuta
dicha
función.
Estas
funciones
modifican
el
comportamiento
del
WordPress
por
defecto.
§ Existen
dos
Kpos:
¨ Filtros
¨ Acciones
19
20. WordPress
hook
database
§ Listado
de
todos
los
hooks
existentes
dentro
de
las
diferentes
versiones
de
WordPress:
¨ h=p://adambrown.info/p/wp_hooks
20
21. Acciones
§ Las
Acciones
son
los
hooks
que
lanza
el
núcleo
de
WordPress
en
puntos
específicos
durante
la
ejecución,
o
cuando
ocurre
un
evento
concreto.
§ Nuestro
plugin
puede
especificar
que
una
o
más
de
sus
funciones
PHP
se
ejecuten
en
esos
puntos,
uKlizando
el
API
Acción.
21
22. Filtros
§ Los
Filtros
son
los
hooks
que
lanza
el
WordPress
para
modificar
textos
de
varios
Kpos
antes
de
añadirlos
a
la
base
de
datos
o
enviarlos
a
la
pantalla
del
navegador.
§ Nuestro
plugin
puede
especificar
que
una
o
más
de
sus
funciones
PHP
se
ejecuten
para
modificar
Kpos
específicos
de
texto
en
esos
momentos,
uKlizando
el
API
de
Filtro.
22
23. Acciones
§ Las
Acciones
son
disparadas
por
eventos
específicos
que
Kenen
lugar
en
WordPress,
tales
como
publicar
un
post,
cambiar
una
planKlla
o
mostrando
una
página
del
panel
de
administración.
§ Nuestro
plugin
puede
responder
al
evento
ejecutando
una
función
PHP.
23
24. ¿Cómo
creamos
una
acción?
§ Seguimos
estos
tres
pasos:
¨ Crear
una
función
PHP,
en
el
archivo
de
plugin,
que
podría
ejecutarse
cuando
ocurre
el
evento.
¨ Crear
un
Hook
de
acción
en
WordPress,
llamando
a
add_acKon()
¨ Poner
la
función
PHP
en
un
archivo
de
plugin,
y
acKvarlo.
24
25. Veamos
un
pequeño
ejemplo
de
acciones
en
WordPress
§ Vamos
a
crear
una
función
que
envíe
un
mail
a
unos
contactos
cuando
creemos
un
nuevo
post:
function avisar_amigos ($post_ID) {
$amigos = ’dreguera@mondragon.edu,iarenaza@mondragon,edu';
mail($amigos, ”Nuevo post en mi blog",
'Acabo de publicar algo en mi blog: http://
mukom.mondragon.edu/socialmedia');
return $post_ID;
}
25
26. Veamos
un
pequeño
ejemplo
de
acciones
en
WordPress
§ Ahora
vamos
a
definir
el
hook,
mediante
una
acción:
¨ add_action ( 'nombre_del_hook', 'nombre_de_su_función', [prioridad],
[argumentos_aceptados] );
§ nombre_del_hook
¨ El
nombre
de
un
hook
de
acción
provisto
por
WordPress,
que
indica
con
que
evento
ha
de
asociarse
su
función.
§ nombre_de_su_función
¨ El
nombre
de
la
función
que
queremos
que
se
ejecute
siguiendo
al
evento
especificado
por
nombre_del_hook.
Esta
puede
ser
una
función
PHP
estándar,
una
función
presente
en
el
núcleo
de
WordPress,
o
una
función
definida
por
nosotros
en
su
archivo
de
plugin
(p.ej:
avisar_amigos)
§ prioridad
¨ Un
número
entero
opcional
que
puede
usarse
para
especificar
el
orden
en
el
cual
se
ejecutarán
las
funciones
asociadas
con
una
acción
parKcular
(por
defecto:
10).
Los
número
más
pequeños
se
ejecutarán
antes,
y
las
funciones
con
la
misma
prioridad
se
ejecutarán
en
el
orden
en
el
que
han
sido
añadidas
a
la
acción.
§ argumentos_aceptados
¨ Un
argumento
de
número
entero,
opcional,
que
define
el
número
de
argumentos
que
puede
aceptar
la
función
(por
defecto
1),
úKl
porque
algunos
hooks
pueden
pasar
más
de
un
argumento
a
su
función
§ En
nuestro
caso
quedaría:
¨ add_action(‘publish_post’,’avisar_amigos’);
26
27. Veamos
un
pequeño
ejemplo
de
acciones
en
WordPress
§ Subimos
el
fichero
a
nuestra
carpeta
y
lo
acKvamos.
§ Tanto
la
accion
como
la
función
que
hemos
definido
deberán
ir
juntas
en
el
fichero
php
para
que
funcione
correctamente.
§ Mas
información
sobre
Acciones:
¨ h=p://codex.wordpress.org/Plugin_API/
AcKon_Reference
27
28. ¿Cómo
creamos
un
filtro?
§ Los
Filtros
son
funciones
a
través
de
las
cuales
WordPress
hace
pasar
los
datos,
en
momentos
parKculares
de
la
ejecución,
justo
antes
de
tomar
alguna
acción
con
ellos
(tal
como
añadir
la
información
a
la
base
de
datos
o
mandarla
a
la
pantalla
del
navegador).
§ Los
filtros
se
sitúan
entre
la
base
de
datos
y
el
navegador
(cuando
WordPress
añade
nuevos
post
y
comentarios
a
la
base
de
datos);
la
mayor
parte
de
las
entradas
y
salidas
en
WordPress
pasa
a
través
de,
al
menos,
un
filtro.
28
29. ¿Cómo
creamos
un
filtro?
§ Pasos
a
seguir
para
crear
un
filtro:
¨ Crear
un
afunción
PHP
que
filtre
los
datos.
¨ Hacer
un
hook
al
filtro
en
WordPress,
llamando
a
add_filter()
¨ Poner
su
función
PHP
en
un
archivo
de
plugin,
y
acKvarlo.
29
30. Veamos
un
ejemplo
de
filtros
en
WordPress
§ Vamos
a
crear
un
filtro
que
nos
elimine
palabras
malsonantes
de
los
comentarios
y
del
contenido:
function limpiar_palabras($content) {
$censura = array(’gilipollas',’estúpido',
['...’]);
$content=str_ireplace($censura,'{censurado}',
$content);
return $content;
}
30
31. Veamos
un
ejemplo
de
filtros
en
WordPress
§ Ahora
definimos
el
hook
mediante
un
filtro:
¨ add_filter
(
'hook_name',
'your_filter',
[priority],
[accepted_args]
);
§ hook_name
¨ Nombre
del
filtro
provido
por
WordPress
que
define
cuando
deberá
ser
ejecutad
§ your_filter
¨ Nombre
de
la
funcion
que
queremos
que
se
use
para
filtrar.
Puede
ser
de
WordPress
o
la
que
nos
hemos
generado.
§ prioridad
¨ Un
número
entero
opcional
que
puede
usarse
para
especificar
el
orden
en
el
cual
se
ejecutarán
las
funciones
asociadas
con
una
acción
parKcular
(por
defecto:
10).
Los
número
más
pequeños
se
ejecutarán
antes,
y
las
funciones
con
la
misma
prioridad
se
ejecutarán
en
el
orden
en
el
que
han
sido
añadidas
a
la
acción.
§ argumentos_aceptados
¨ Un
argumento
de
número
entero,
opcional,
que
define
el
número
de
argumentos
que
puede
aceptar
la
función
(por
defecto
1),
úKl
porque
algunos
hooks
pueden
pasar
más
de
un
argumento
a
su
función
§ En
nuestro
caso
quedaría
algo
así:
¨ add_filter('comment_text',’limpiar_palabras');
31
32. Veamos
un
ejemplo
de
filtros
en
WordPress
§ Subimos
el
fichero
a
nuestra
carpeta
y
lo
acKvamos.
§ Tanto
el
filtro
como
la
función
que
hemos
definido
deberán
ir
juntas
en
el
fichero
php
para
que
funcione
correctamente.
§ Mas
información
sobre
Filtros:
¨ h=p://codex.wordpress.org/Plugin_API/
Filter_Reference
32
33. Filtros
y
acciones
§ Los
filtros
y
acciones
no
sólo
nos
sirven
para
la
creación
de
plugins
sino
que
también
nos
sirven
para
modificar
WordPress
§ Para
ello
todas
las
funiones
deberíamos
hacerlas
en
el
archivo
funcKons.php
§ Recomendación:
Crear
temas
hijos
¨ h=p://www.wordpresseuskadi.com/jesus-‐
amieiro/
33
34. Plugins
vs
Temas
§ Si
te
decantas
por
la
creación
de
plugins
para
la
modificación:
¨ Podemos
gesKonar
los
plugins
desde
el
backend
de
WordPress
teniendo
control
total
para
si
acKvación/desacKvación
¨ Podemos
encontrar
los
errores
de
una
manera
mas
sencilla
¨ Separamos
la
modificación
del
tema
así
lo
tenemos
independiente.
34
35. Plugins
vs
Temas
§ Si
te
decantas
por
modificar
el
tema
a.k.a
“modificar
el
funcKons.php”:
¨ Cada
vez
que
se
actualice
el
tema
en
cuesKón,
se
actualiza
el
fichero
funcKons.php
osea
que
no
es
muy
prácKco
la
verdad
¨ Cada
vez
que
queramos
cambiar
de
tema
nos
deberíamos
“migrar”
el
funcKons.php
para
no
perder
esa
funcionalidad
¨ Es
buena
opción
si
lo
que
queremos
es
dotar
a
un
tema
específico
una
funcionalidad
específica,
si
no
es
así
es
mas
conveniente
desarrollar
un
plugin.
35
36. Creación
de
un
plugin
simple
§ Como
hemos
dicho
nuestros
plugins
se
guardan
en
la
carpeta
de
/wp-‐content/plugins
§ Tenemos
varias
opciones:
¨ Redactar
nuestro
plugin
y
luego
subirlo
via
FTP
¨ Crear
el
fichero
directamente
en
el
servidor.
§ En
nuestro
caso
como
vamos
a
trabajar
con
una
máquina
virtual
vamos
hacer
la
segunda
opción.
36
37. ¿Qué
necesitamos?
§ Una
instalación
de
WordPress
¨ h=ps://wordpress.org/download/
¨ Ejemplo
de
como
instalar
WP3.8
• h=p://www.slideshare.net/dreguera/instalacin-‐y-‐
configuracin-‐de-‐wordpress-‐38-‐31329351
§ Programa
de
edición
de
texto.
¨ Yo
aconsejo
SublimeText2
h=p://www.sublimetext.com/
pero
puede
ser
otro
con
el
que
estemos
familiarizados.
37
38. Vamos
a
nuestro
directorio
plugins
§ $ cd /var/www/wordpress/wp-content/plugins
38
39. Vamos
a
crear
el
fichero
garaiaplugin.php
§ $ sudo touch garaiaplugin.php (necesitaremos
permisos)
39
40. Vamos
a
editarlo
con
las
cabeceras
§ $ sudo nano garaiaplugin.php
40
41. Ahora
ya
debería
aparecer
en
la
opción
plugins
§ Nos
logeamos
en
el
backend
y
vamos
a
la
opción
plugins
41
42. Vamos
a
añadir
el
código
§ Vamos
a
desarrollar
un
plugin
que
nos
va
a
generar
la
firma
en
cada
post.
42
43. Ahora
acKvamos
el
plugin
§ Seleccionamos
el
plugin
y
le
damos
a
la
opción
acKvar
43