Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Braulio Aquino

October 25, 2014
Tweet

More Decks by Braulio Aquino

Other Decks in Programming

Transcript

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

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

    modificaciones a funciones o reemplaza data.
  3. 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 ) ); }
  4. 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; }
  5. - ejemplo - Cambiar la url en la página de

    resultados de búsqueda. ACTION HOOK
  6. 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'; }
  7. 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 ); }
  8. - ejemplo - Agregar un nuevo campo al lado de

    edición rápida en la lista de entradas. FILTER HOOK
  9. 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; }
  10. 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(); } }
  11. - ejemplo - Agregar nuevas clases al body en cada

    WordPress de multisitios. FILTER HOOK
  12. 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; }
  13. 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); }
  14. 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>'; }
  15. ACTION - Lista de hooks -
 codex.wordpress.org/Plugin_API/Action_Reference FILTER - Lista

    de hooks -
 codex.wordpress.org/Plugin_API/Filter_Reference
  16. 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
  17. 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