Slide 1

Slide 1 text

ACTION & FILTER HOOKS Braulio Aquino

Slide 2

Slide 2 text

BRAULIO AQUINO orange612.com @braulioaquino

Slide 3

Slide 3 text

“Los Hooks son lo que permiten hacer algo cada vez que WordPress haga alguna otra cosa”

Slide 4

Slide 4 text

ACTION Realizan funciones cuando se ejecuta un evento. FILTER Realizan modificaciones a funciones o reemplaza data.

Slide 5

Slide 5 text

ACTION add_action('hook','función',10,1); FILTER add_filter('hook','función',10,1);

Slide 6

Slide 6 text

- ejemplo - Agregar custom post types cuando WordPress termine de cargar. ACTION HOOK

Slide 7

Slide 7 text

Agregar custom post types cuando WordPress termine de cargar. add_action( 'init', 'nuevos_post_type' ); function nuevos_post_type() { register_post_type( 'libros', array( 'labels' => array('name' => 'Libros'), 'rewrite' => array('slug' => 'libro'), 'has_archive' => TRUE ) ); }

Slide 8

Slide 8 text

- ejemplo - Mostrar contenido por defecto si el contenido no existe. FILTER HOOK

Slide 9

Slide 9 text

Mostrar contenido por defecto si el contenido no existe. add_filter('the_content','def_content',10,1); 
 function def_content($content) { $default_content = 'Mi contenido \o/'; if (!isset($content) || trim($content)=='') { return $default_content; } return $content; }

Slide 10

Slide 10 text

- ejemplo - Cambiar la url en la página de resultados de búsqueda. ACTION HOOK

Slide 11

Slide 11 text

Cambiar la url en la página de resultados de búsqueda. add_action( 'init', 'change_url' ); function change_url() { $GLOBALS['wp_rewrite'] -> search_base='mas'; }

Slide 12

Slide 12 text

- ejemplo - Cambiar la cantidad de palabras por defecto del excerpt. FILTER HOOK

Slide 13

Slide 13 text

Cambiar la cantidad de palabras por defecto del excerpt. add_filter('excerpt_length','custom_excerpt',99); function custom_excerpt( $length ) { return 20; }

Slide 14

Slide 14 text

- ejemplo - Ocultar la barra de administración de WordPress al cargar el tema. ACTION HOOK

Slide 15

Slide 15 text

Ocultar la barra de administración de WordPress al cargar el tema. add_action('after_setup_theme','remove_bar'); function remove_bar() { show_admin_bar( false ); }

Slide 16

Slide 16 text

- ejemplo - Agregar un nuevo campo al lado de edición rápida en la lista de entradas. FILTER HOOK

Slide 17

Slide 17 text

Agregar un nuevo campo al lado de edición rápida en la lista de entradas. add_filter('row_actions','my_action', 10, 2); function my_action( $actions, $post ) { if ( $post->post_type == ‘post' ) { $actions['in_google'] = 'Google'; } return $actions; }

Slide 18

Slide 18 text

- ejemplo - Redirección al login cuando visitantes quieran ver una página privada. ACTION HOOK

Slide 19

Slide 19 text

Redirección al login cuando visitantes quieran ver una página privada. add_action('template_redirect','private_redirect'); function private_redirect() { if( is_page('secreto') && !is_user_logged_in() ) { wp_redirect( home_url( '/entrar/' ) ); exit(); } }

Slide 20

Slide 20 text

- ejemplo - Agregar nuevas clases al body en cada WordPress de multisitios. FILTER HOOK

Slide 21

Slide 21 text

Agregar nuevas clases al body en cada WordPress de multisitios. add_filter('body_class', 'multisite_classes'); function multisite_classes( $classes ) { $id = get_current_blog_id(); $slug = strtolower(trim(get_bloginfo('name'))); $slug = str_replace(' ', '-', $slug); $classes[] = $slug; $classes[] = 'site-id-'.$id; return $classes; }

Slide 22

Slide 22 text

- ejemplo - Enviar notificación por correo al usuario cuando se le cambia de role. ACTION HOOK

Slide 23

Slide 23 text

Enviar notificación por correo al usuario cuando se le cambia de role. add_action('set_user_role','role_update',10,2); 
 function role_update($user_id,$new_role) { $user_info = get_userdata($user_id); $to = $user_info->user_email; $subject = 'Tu role cambió'; $message = 'Hola '.$user_info->display_name.
 ' tu role en tal sitio cambió, ahora eres '.$new_role; wp_mail($to, $subject, $message); }

Slide 24

Slide 24 text

- ejemplo - Cambiar el mensaje de pie de página en el wp-admin FILTER HOOK

Slide 25

Slide 25 text

Cambiar el mensaje de pie de página en el wp-admin add_filter('admin_footer_text', 'footer_admin'); function footer_admin () { echo 'Desarrollado por
 Orange612
 usando
 WordPress'; }

Slide 26

Slide 26 text

ACTION - Lista de hooks -
 codex.wordpress.org/Plugin_API/Action_Reference FILTER - Lista de hooks -
 codex.wordpress.org/Plugin_API/Filter_Reference

Slide 27

Slide 27 text

ACTION • init • wp_head • wp_footer • admin_init • after_setup_theme • template_redirect • comment_post • set_user_role • admin_notices • publish_post • switch_theme • delete_user • password_reset • add_meta_boxes

Slide 28

Slide 28 text

FILTER • wp_title • post_row_actions • single_template • get_the_excerpt • excerpt_length • excerpt_more • allowed_redirect_hosts • login_message • post_updated_messages • the_content • template_include • the_category • title_save_pre • wp_mail_content_type

Slide 29

Slide 29 text

ACTION do_action('hook','función'); FILTER apply_filters('hook','función');

Slide 30

Slide 30 text

ACTION remove_action('hook','función',10); FILTER remove_filter('hook','función',10);

Slide 31

Slide 31 text

BRAULIO AQUINO braulioaquino.com orange612.com @braulioaquino [email protected] speakerdeck.com/braulioaquino