Genesis Framework: Hooks Actions y Hooks Filters

Hooks Actions y Filters

Algo tan simple como esos ¬ęganchos¬Ľ nos permite a√Īadir funcionalidades de una forma f√°cil y r√°pida a cualquier child theme de Genesis.

Para ver los hooks de una manera sencilla lo ideal es instalarse el plugin: Genesis Visual Hook Guide. Una vez instalado y activado el plugin mostrar√° en el men√ļ superior de administraci√≥n la opci√≥n ‘G Hook Guide’ (se muestra al visitar la web).

Si queremos insertar pj. un banner, se puede hacer por c√≥digo o usando el plugin ‘Genesis Simple Hooks‘.

Si queremos trabajar con otras √°reas de la web se pueden usar los plugins: Genesis Simple Share, Genesis Simple Edits, Genesis Simple Sidebars.

Si incluimos c√≥digo php habr√° que marcar la opci√≥n ‘Execute php…’.

<?php
 if (is_home() ) {
echo '<center>Mensaje a mostrar</center>';
}
?>

Si estamos en el home mostrar√° ¬ęMensaje a mostrar¬Ľ. Si ponemos if (!is_home()){ …. } lo mostrar√° en todas las p√°ginas menos el home.

Hook Filters: Snippets para funtions.php

  • FORZAR LAYOUT
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_content_sidebar' );
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_content' );
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_content_sidebar_sidebar' );
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_sidebar_content' );
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_content_sidebar' );
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
  • QUITAR LAYOUT DE LA OPCIONES
genesis_unregister_layout( 'content-sidebar' );
genesis_unregister_layout( 'sidebar-content' );
genesis_unregister_layout( 'content-sidebar-sidebar' );
genesis_unregister_layout( 'sidebar-sidebar-content' );
genesis_unregister_layout( 'sidebar-content-sidebar' );
genesis_unregister_layout( 'full-width-content' );
  • QUITAR LA OPCI√ďN DE MOSTRAR LOS PLAYOUT (PLANTILLAS) EN LA EDICI√ďN DEL POST
remove_theme_support( 'genesis-inpost-layouts' );
  • QUITAR LA OPCI√ďN DEL SEO DE GENESIS EN LA EDICI√ďN DE POST
remove_action( 'admin_menu', 'genesis_add_inpost_seo_box' );
  • QUITAR LAS OPCIONES DE SEO GENESIS DEL MEN√ö ADMIN
remove_theme_support( 'genesis-seo-settings-menu' );
  • QUITAR SEO GENESIS DEL MEN√ö ADMIN
remove_theme_support( 'genesis-admin-menu' );
  • FUNCI√ďN PARA QUITAR LOS WIDGETS DEL APARTADO WIDGETS

Featured_Page permite a√Īadir un p√°gina al sitebard, Featured_Post un post y User_Profile el autor de la entrada.

add_action( 'widgets_init', 'quitar_widgets', 20 );
function quitar_widgets() { 
unregister_widget( 'Genesis_Featured_Page' ); 
unregister_widget( 'Genesis_Featured_Post' ); 
unregister_widget( 'Genesis_User_Profile_Widget' ); 
}

  • QUITAR EL MEN√ö DE GENESIS SI NO ES EL ADMINISTRADOR
if ( !current_user_can( 'manage_options' ) ) {
  remove_theme_support( 'genesis-admin-menu' );
 }
  • QUITAR T√ćTULO DEL POST
remove_action( 'genesis_entry_header', 'genesis_do_post_title' );

DENTRO DEL POST

  • Quitar contenido del post
    remove_action( 'genesis_entry_content', 'genesis_do_post_content' );
  • Quitar la imagen destacada
    remove_action( 'genesis_entry_content', 'genesis_do_post_image', 8 );

DESPU√ČS DEL POST

  • A√Īadir navegaci√≥n de posts
    add_action( 'genesis_entry_footer', 'genesis_prev_next_post_nav' );
  • Quitar la informaci√≥n despu√©s del post
    remove_action( 'genesis_entry_footer', 'genesis_post_meta' );
  • Quitar la informaci√≥n despu√©s del post en la home
    add_action( 'genesis_before_entry', 'quitar_informacion' );
    function quitar_informacion() {    
    if ( is_home() ) {        
    remove_action( 'genesis_entry_footer', 'genesis_post_meta' );
        }
    }
  • Modificar la informaci√≥n despu√©s del post
    add_filter( 'genesis_post_meta', 'modificar_informacion_pie_entrada' );
    function modificar_informacion_pie_entrada($post_meta) {
        $post_meta = '[post_categories] [post_tags]';
        return $post_meta;
    }
  • A√Īadir autor
    add_filter( 'get_the_author_genesis_author_box_single', '__return_true' );
  • Modificar autor
add_filter( 'genesis_author_box_title', 'ypro_cambiar_texto' );
function ypro_cambiar_texto() {
return '<strong>Aquí el título que queramos</strong>';
}
  • Modificar pie de p√°gina
remove_action( 'genesis_footer', 'genesis_do_footer' );
add_action( 'genesis_footer', 'ypro_pie' );
function ypro_pie() {
?>
<p>Aquí podemos colocar lo que queramos</p>
<?php
}
  • Colocar el men√ļ arriba de todo
remove_action( 'genesis_after_header', 'genesis_do_nav' );
add_action( 'genesis_before_header', 'genesis_do_nav' );
  • Colocar el men√ļ secundario en el pie
remove_action( 'genesis_after_header', 'genesis_do_subnav' );
add_action( 'genesis_after_footer', 'genesis_do_subnav' );
  • Modificar la longitud del resumen de los posts
add_filter( 'excerpt_length', 'ypro_resumen' );
function ypro_resumen( $length ) {return 200;}
  • Modificar pagina anterior y siguiente
add_filter ( 'genesis_next_link_text' , 'ypro_siguiente' );
function ypro_siguiente( $text ) {
return 'La página de después &#x000BB;';
}

add_filter ( 'genesis_prev_link_text' , 'ypro_anterior' );
function ypro_anterior( $text ) {
return '&#x000AB; La que va antes';
}
  • Modificar texto de buscar en la web
add_filter( 'genesis_search_text', 'ypro_buscar' );
function ypro_buscar( $text ) {
return esc_attr( '¬°Que lo busques!' );
}
  • Quitar categor√≠as en los posts (no en la url)
remove_action( 'genesis_entry_footer', 'genesis_post_meta' );
  • Quitar la sidebar en la home
function ypro_sidebar_fuera_home(){
if ( is_front_page() ) {
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
     }
}
add_action('genesis_meta','ypro_sidebar_fuera_home');
  • Mostrar author box en las p√°ginas de autor y que sea de color distinto
add_filter( 'get_the_author_genesis_author_box_archive', '__return_true' );
  • Pie de p√°gina distinto en home que en p√°ginas internas
remove_action( 'genesis_footer', 'genesis_do_footer' );
add_action( 'genesis_footer', 'ypro_pie_home' );
function ypro_pie_home() {
if( is_front_page() ) {
echo('<p>Esto es la home</p>');
}else {
echo('<p>Esto NO es la home</p>');
}
}
  • Colocar el men√ļ arriba de todo s√≥lo en las p√°ginas internas
add_action('genesis_meta','ypro_menu_arriba_paginas_internas');
function ypro_menu_arriba_paginas_internas() {
if( !is_front_page() ) {
remove_action( 'genesis_after_header', 'genesis_do_nav' );
add_action( 'genesis_before_header', 'genesis_do_nav' );
}
}
  • Modificar la ubicaci√≥n de la ruta de exploraci√≥n
remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' );
add_action( 'genesis_before_header', 'genesis_do_breadcrumbs' );
add_action( 'genesis_before_sidebar_widget_area', 'genesis_do_breadcrumbs' );
add_action( 'genesis_after_loop', 'genesis_do_breadcrumbs' );
  • ¬†Quitar el texto de c√≥digo permitido de los comentarios
function ypro_quitar_codigo_permitido ( $defaults ) {
$defaults['comment_notes_after'] = '';
return $defaults;
}
add_filter( 'comment_form_defaults', 'ypro_quitar_codigo_permitido' );
  • Modificar texto ¬ęDeja un comentario¬Ľ y ¬ęPublicar comentario¬Ľ
function ypro_modificar_deja_comentario( $defaults ) {
$defaults['title_reply'] = __( 'Escribe lo que quieras' );
return $defaults;
}
add_filter( 'comment_form_defaults', 'ypro_modificar_deja_comentario' );

function ypro_modificar_publicar_comentario( $defaults ) {
$defaults['label_submit'] = __( 'ENVIAR', 'custom' );
return $defaults;
}
add_filter( 'comment_form_defaults', 'ypro_modificar_publicar_comentario' );
  • Poner un anuncio despu√©s entre posts
add_action('genesis_after_entry', 'ypro_anuncio');
function ypro_anuncio() {
echo('<div class="entry">');
echo('Aquí va el anuncio');
echo('</div>');
}
  • Poner un anuncio cada dos posts
add_action('genesis_after_entry', 'ypro_anuncio_cada_dos');
function ypro_anuncio_cada_dos() {
global $contador; // Ahora el valor es 0
$contador++; // Ahora el valor es 1
if( $contador == 2 ) { 
// Que NO es el caso
echo('<div class="entry">');
echo('Aquí va el anuncio');
echo('</div>');
$contador = 0; // Ahora vale 0
}
}