*

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
}
}