WordPress: Action & Filter Hooks

WordPress: Action & Filter Hooks

Qué es, diferencias y formas de uso de los Action Hooks y los Filter Hooks en WordPress

6ba65e44abea73ee048e9e9384cdf330?s=128

Braulio Aquino

October 25, 2014
Tweet

Transcript

  1. ACTION & FILTER HOOKS Braulio Aquino

  2. BRAULIO AQUINO orange612.com @braulioaquino

  3. “Los Hooks son lo que permiten hacer algo cada vez

    que WordPress haga alguna otra cosa”
  4. ACTION Realizan funciones cuando se ejecuta un evento. FILTER Realizan

    modificaciones a funciones o reemplaza data.
  5. ACTION add_action('hook','función',10,1); FILTER add_filter('hook','función',10,1);

  6. - ejemplo - Agregar custom post types cuando WordPress termine

    de cargar. ACTION HOOK
  7. 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 ) ); }
  8. - ejemplo - Mostrar contenido por defecto si el contenido

    no existe. FILTER HOOK
  9. 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; }
  10. - ejemplo - Cambiar la url en la página de

    resultados de búsqueda. ACTION HOOK
  11. 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'; }
  12. - ejemplo - Cambiar la cantidad de palabras por defecto

    del excerpt. FILTER HOOK
  13. Cambiar la cantidad de palabras por defecto del excerpt. add_filter('excerpt_length','custom_excerpt',99);

    function custom_excerpt( $length ) { return 20; }
  14. - ejemplo - Ocultar la barra de administración de WordPress

    al cargar el tema. ACTION HOOK
  15. 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 ); }
  16. - ejemplo - Agregar un nuevo campo al lado de

    edición rápida en la lista de entradas. FILTER HOOK
  17. 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'] = '<a href="https://www.google.com/search? q='.get_permalink($post->ID).'">Google</a>'; } return $actions; }
  18. - ejemplo - Redirección al login cuando visitantes quieran ver

    una página privada. ACTION HOOK
  19. 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(); } }
  20. - ejemplo - Agregar nuevas clases al body en cada

    WordPress de multisitios. FILTER HOOK
  21. 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; }
  22. - ejemplo - Enviar notificación por correo al usuario cuando

    se le cambia de role. ACTION HOOK
  23. 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); }
  24. - ejemplo - Cambiar el mensaje de pie de página

    en el wp-admin FILTER HOOK
  25. 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
 <a href="http://orange612.com">Orange612</a>
 usando
 <a href="http://wordpress.org">WordPress</a>'; }
  26. ACTION - Lista de hooks -
 codex.wordpress.org/Plugin_API/Action_Reference FILTER - Lista

    de hooks -
 codex.wordpress.org/Plugin_API/Filter_Reference
  27. 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
  28. 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
  29. ACTION do_action('hook','función'); FILTER apply_filters('hook','función');

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

  31. BRAULIO AQUINO braulioaquino.com orange612.com @braulioaquino braulioaquino@gmail.com speakerdeck.com/braulioaquino