• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Carrie Dils

Carrie Dils

WordPress Developer, Consultant, and Instructor

  • About
    • Work with Me
    • Around the Web
    • Media Kit
  • Blog
  • Podcast
  • Web Development Courses
  • Freelancing Courses

Genesis Hook Reference: A Complete List of Hooks & Filters for the Genesis Framework

Originally published on May 26, 2017 by Carrie Dils 19 Comments
Last updated on March 22, 2018

FacebookTweetPinLinkedIn

Genesis Theme Framework for WordPressNeed a complete reference of action hooks and filters found in the Genesis Framework? Here ya go.

I’m not going to add a lot of commentary to this post as it’s truly meant as a reference guide, not a tutorial. My intent is to let you know all of the locations where you can hook into Genesis as well as what content is filterable. It’s up to you to figure out what to do with these hooks, but if you want a tip of where to start, copy the hook and do a universal search in the framework files to see where it’s used. Then read the documentation. 🙂

If you’re more interested in how to use hooks to customize or create Genesis child themes, check out the resources at the bottom of this post.

Hook Reference, engage your engines. Let’s begin.

p.s. There are affiliate links in this post. Watch out, ’cause they bite!

Genesis Template Action Hooks

If you crack open the Genesis Framework files, you’ll notice that there are standard template files in the root directory. There are a variety of hooks present in these files, so for lack of a more creative term I’m going to call them “template hooks.”

Note, however, that these are not the only hooks you could use in a template. See the next section for to reference structural hooks.

Hint: To find available action hooks in any theme or plugin, search the codebase for do_action.

genesis/comments.php

  • genesis_before_comments
  • genesis_comments
  • genesis_after_comments
  • genesis_before_pings
  • genesis_pings
  • genesis_after_pings
  • genesis_before_comment_form
  • genesis_comment_form
  • genesis_after_comment_form

genesis/footer.php

  • genesis_before_footer
  • genesis_footer
  • genesis_after_footer
  • genesis_after

genesis/header.php

  • genesis_doctype
  • genesis_title
  • genesis_meta
  • genesis_before
  • genesis_before_header
  • genesis_header
  • genesis_after_header

genesis/sidebar-alt.php

  • genesis_before_sidebar_alt_widget_area
  • genesis_sidebar_alt
  • genesis_after_sidebar_alt_widget_area

genesis/sidebar.php

  • genesis_before_sidebar_widget_area
  • genesis_sidebar
  • genesis_after_sidebar_widget_area

Genesis Structural Action Hooks

The previous set of hooks are ones used specifically in Genesis’ theme template files. The following hooks are the ones found in the /lib/ folder. Most deal with front-facing content and few deal only with the WP admin area. I’ll group the latter toward the end.

genesis/lib/framework.php

  • genesis_before_content_sidebar_wrap
  • genesis_before_content
  • genesis_before_loop
  • genesis_loop
  • genesis_after_loop
  • genesis_after_content
  • genesis_after_content_sidebar_wrap

genesis/lib/init.php

  • genesis_pre
  • genesis_pre_framework
  • genesis_init
  • genesis_setup

genesis/lib/structure/archive.php

  • genesis_archive_title_descriptions

genesis/lib/structure/comments.php

  • genesis_list_comments
  • genesis_list_pings
  • genesis_before_comment
  • genesis_after_comment

genesis/lib/structure/header.php

  • genesis_site_title
  • genesis_site_description
  • genesis_header_right

genesis/lib/structure/loops.php

Note that I’m only including HTML5 hooks added in Genesis 2.0+. The old XHTML hooks should be thrown down the garbage disposal.

  • genesis_before_while
  • genesis_before_entry
  • genesis_entry_header
  • genesis_before_entry_content
  • genesis_entry_content
  • genesis_after_entry_content
  • genesis_entry_footer
  • genesis_after_entry
  • genesis_after_endwhile
  • genesis_loop_else
  • genesis_before_post
  • genesis_before_post_title
  • genesis_post_title
  • genesis_after_post_title
  • genesis_before_post_content
  • genesis_post_content
  • genesis_after_post_content
  • genesis_after_post
  • genesis_after_endwhile
  • genesis_loop_else

genesis/lib/structure/post.php

  • genesis_reset_loops

genesis/lib/structure/menu.php

  • genesis_register_nav_menus

genesis/lib/admin/menu.php

  • genesis_admin_menu

genesis/lib/classes/admin.php

  • genesis_admin_init

Still with me?

Genesis Filter Hooks

Most of the time when developers talk about hooks, they’re talking specifically about action hooks. But hooks come in two flavors: actions and filters. And guess what? Filters have feelings, too, so that’s why I’m including a filter reference.

Hint: To search for what filter hooks are available in any theme or plugin, search the codebase for apply_filters.

/genesis/404.php

  • genesis_404_entry_title
  • genesis_404_entry_content

/genesis/lib/admin/cpt-archive-settings.php

  • genesis_cpt_archive_settings_page_label
  • genesis_cpt_archive_settings_menu_label
  • genesis_cpt_archive_settings_capability_ . $this->post_type->name
  • genesis_cpt_archive_settings_label

/genesis/lib/admin/import-export.php

  • genesis_export_options

/genesis/lib/admin/term-meta.php

  • genesis_term_meta_defaults
  • genesis_term_meta
  • genesis_term_meta_{$meta_key}

/genesis/lib/admin/user-meta.php

  • genesis_user_meta_defaults

/genesis/lib/classes/breadcrumb.php

  • genesis_breadcrumb_args
  • genesis_build_crumbs
  • genesis_archive_crumb
  • genesis_single_crumb
  • genesis_home_crumb
  • genesis_blog_crumb
  • genesis_search_crumb
  • genesis_404_crumb
  • genesis_page_crumb
  • genesis_attachment_crumb
  • genesis_post_crumb
  • genesis_cpt_crumb
  • genesis_category_crumb
  • genesis_tag_crumb
  • genesis_tax_crumb
  • genesis_year_crumb
  • genesis_month_crumb
  • genesis_day_crumb
  • genesis_author_crumb
  • genesis_post_type_crumb
  • genesis_breadcrumb_link

/genesis/lib/classes/class-genesis-script-loader.php

  • genesis_superfish_args_url
  • genesis_toggles

/genesis/lib/classes/sanitization.php

  • genesis_available_sanitizer_filters

/genesis/lib/functions/formatting.php

  • get_the_content_limit_allowedtags
  • get_the_content_more_link
  • get_the_content_limit
  • the_content_limit

/genesis/lib/functions/general.php

  • genesis_sitemap_output
  • genesis_canonical_url

/genesis/lib/functions/head.php

  • genesis_get_seo_meta_description
  • genesis_get_seo_meta_keywords
  • genesis_get_robots_meta_content
  • genesis_pre_load_favicon
  • genesis_favicon_url

/genesis/lib/functions/image.php

  • genesis_get_image_default_args
  • genesis_pre_get_image
  • genesis_get_image

/genesis/lib/functions/layout.php

  • genesis_initial_layouts
  • genesis_get_layouts
  • genesis_site_layout
  • genesis_structural_wrap-{$context}

/genesis/lib/functions/markup.php

  • genesis_markup_{$args[‘context’]}
  • genesis_markup_{$args[‘context’]}_output
  • genesis_markup_{$args[‘context’]}_open
  • genesis_markup_{$args[‘context’]}_close
  • genesis_markup_open
  • genesis_markup_close
  • genesis_attr_{$context}
  • genesis_attr_{$context}_output

/genesis/lib/functions/menu.php

  • genesis_superfish_enabled

/genesis/lib/functions/options.php

  • genesis_pre_get_option_{$key}
  • genesis_options

/genesis/lib/functions/widgetize.php

  • genesis_register_sidebar_defaults
  • genesis_register_widget_area_defaults
  • genesis_widget_area_defaults
  • genesis_sidebar_title_output

/genesis/lib/init.php

  • genesis_theme_support_menus
  • genesis_theme_support_structural_wraps
  • genesis_settings_field
  • genesis_seo_settings_field
  • genesis_cpt_archive_settings_field_prefix

/genesis/lib/shortcodes/footer.php

  • genesis_footer_backtotop_shortcode
  • genesis_footer_copyright_shortcode
  • genesis_footer_childtheme_link_shortcode
  • genesis_footer_genesis_link_shortcode
  • genesis_footer_studiopress_link_shortcode
  • genesis_footer_wordpress_link_shortcode
  • genesis_footer_site_title_shortcode
  • genesis_footer_home_link_shortcode
  • genesis_footer_loginout_shortcode

/genesis/lib/shortcodes/post.php

  • genesis_post_date_shortcode
  • genesis_post_time_shortcode
  • genesis_post_modified_date_shortcode
  • genesis_post_modified_time_shortcode
  • genesis_post_author_shortcode
  • genesis_post_author_link_shortcode
  • genesis_post_author_posts_link_shortcode
  • genesis_post_comments_shortcode
  • genesis_post_tags_shortcode
  • genesis_post_categories_shortcode
  • genesis_post_terms_shortcode
  • genesis_edit_post_link
  • genesis_post_edit_shortcode

/genesis/lib/structure/archive.php

  • genesis_term_intro_text_output
  • genesis_author_intro_text_output
  • genesis_cpt_archive_intro_text_output

/genesis/lib/structure/comments.php

  • genesis_title_comments
  • genesis_prev_comments_link_text
  • genesis_next_comments_link_text
  • genesis_no_comments_text
  • genesis_comments_closed_text
  • genesis_title_pings
  • genesis_no_pings_text
  • genesis_comment_list_args
  • genesis_ping_list_args
  • comment_author_says_text
  • genesis_comment_awaiting_moderation
  • genesis_show_comment_date
  • genesis_comment_awaiting_moderation
  • genesis_comment_form_args

/genesis/lib/structure/footer.php

  • genesis_footer_widget_areas
  • genesis_footer_backtotop_text
  • genesis_footer_creds_text
  • genesis_footer_output
  • genesis_footer_scripts

/genesis/lib/structure/header.php

  • genesis_viewport_value
  • genesis_canonical
  • genesis_header_scripts
  • genesis_site_title_wrap
  • genesis_seo_title
  • genesis_site_description_wrap
  • genesis_seo_description
  • genesis_skip_links_output

/genesis/lib/structure/loops.php

  • genesis_custom_loop_args
  • genesis_grid_loop_post_class

/genesis/lib/structure/post.php

  • genesis_post_title_text
  • genesis_link_post_title
  • genesis_entry_title_wrap
  • genesis_post_title_output
  • genesis_post_info
  • genesis_edit_post_link
  • genesis_post_permalink
  • genesis_noposts_text
  • genesis_post_meta
  • genesis_author_box_gravatar_size
  • genesis_author_box_title
  • genesis_author_box
  • genesis_prev_link_text
  • genesis_next_link_text

/genesis/lib/structure/search.php

  • genesis_search_text
  • genesis_search_button_text
  • genesis_search_form_label
  • genesis_search_form

/genesis/lib/widgets/featured-page-widget.php

  • genesis_featured_page_title

/genesis/lib/widgets/featured-post-widget.php

  • genesis_featured_post_title

/genesis/lib/widgets/user-profile-widget.php

  • genesis_gravatar_sizes

/genesis/search.php

  • genesis_search_title_text
  • genesis_search_title_output

Additional Resources on using Genesis Hooks

  • Putting the Framework in Genesis Framework (overview of how the framework is structured)
  • Genesis Child Theme Development: How to Make it Yours (a guide to customizing themes for clients)
  • How to Build a Genesis Child Theme from Scratch (an intro to my course at Lynda.com)
  • Genesis Visual Hook Guide (free plugin – great for seeing where hooks are on a page)
  • Genesis Extender (paid plugin – great for getting your feet wet working with hooks)
  • Genesis Code Snippets (code examples of how you can use certain hooks. Note you have to be logged into your StudioPress account to view this link)
FacebookTweetPinLinkedIn

Filed Under: Genesis Framework

About Carrie Dils

I believe you can make a good living doing work that makes you excited to get out of bed every morning.

In addition to this blog, I host a podcast for freelancers, teach business courses at The Fearless Freelancer®, and teach WordPress and Front-end Development courses for Lynda.com and LinkedIN Learning. I'm also writing a book for freelancers.

Reader Interactions

Comments

  1. Fernan says

    May 30, 2017 at 4:14 am

    Such a compilation!

    Thank you Carrie for this information, all ordered and in one place 🙂

    Perfect for the Genesis framework lovers as I am 🙂

    Reply
    • Carrie Dils says

      May 30, 2017 at 9:00 am

      You’re welcome!

      Reply
  2. https://www.sebastian-widmann.de says

    May 31, 2017 at 11:15 pm

    Now it looks way better – thanks for the update 🙂

    Best regards,
    Sebastian

    Reply
  3. leonard marchal says

    June 2, 2017 at 5:10 am

    Great list, very usefull as a reference, thanks!

    Reply
  4. ericajayne says

    June 16, 2017 at 9:26 pm

    Much appreciated, thanks for posting!

    Reply
  5. vinoth1810 says

    July 8, 2017 at 3:16 am

    Hi Carrie,

    I am trying to apply my custom class to the of genesis nav items .

    Default am getting this -> “menu genesis-nav-menu menu-primary js-superfish sf-js-enabled sf-arrows”

    What I want -> “my-custom-class”.

    How to achieve this !

    Reply
    • Carrie Dils says

      July 10, 2017 at 6:35 pm

      http://kb.wpbeaverbuilder.com/article/421-add-css-classes-to-individual-menu-items

      Reply
  6. Scott says

    January 21, 2018 at 10:40 pm

    Hi Carrie,

    Love your work, also looked at your lessons on Lynda!

    I have not been able to figure out for few days, how to add additional classes to element in Genesis posts loop.

    I was really hoping you would be able to help me figure this out.

    Faithfully,
    Scott

    Reply
  7. Bapi Dey says

    March 20, 2018 at 1:35 pm

    There is a mistake under genesis/lib/structure/comments option 5 and 6

    Reply
    • Carrie Dils says

      March 20, 2018 at 2:53 pm

      What line numbers?

      Reply
    • Carrie Dils says

      March 22, 2018 at 6:50 pm

      Ah, I gotcha. I misunderstood and thought you meant in the codebase. My error fixed. 🙂

      Reply
  8. Bapi says

    March 21, 2018 at 1:22 pm

    Thanks for fixing.

    Reply
  9. smenegassi says

    April 24, 2018 at 9:27 am

    Thank you Carrie. You saved my life today 🙂

    Reply
    • Carrie Dils says

      April 24, 2018 at 9:36 am

      Well I’m glad to hear it!

      Reply
  10. AWPGuide says

    January 11, 2019 at 9:00 am

    Loved this post 🙂

    Reply
  11. Raiam says

    October 3, 2019 at 3:06 am

    Hi, how you doing? sorry to take some mins from you valuable time, Im getting crazy 😞 I have a client that has Genesis installed with Mai Law Pro (child theme) I had to create a plugin where they can add easily the markup from the header, so in the future it gets easy to make changes! for the posts and some other pages, I am able to call the hook genesis_before_header, but for the Pages, any of the hooks are working for me, do you know which are the hooks for the WordPress Pages? I have 2 days fighting and reading tutorials like crazy, but nothing helps, pls, any advise?

    regards

    Reply
    • Carrie Dils says

      October 10, 2019 at 12:19 pm

      Hi Raiam, there are too many unknown factors for me to know how to help. You could use the Genesis Visual Hook Guide plugin to confirm hook locations on a page. You could also use a plugin like Query Monitor to see which hooks are firing (and in what order) to help you debug.

      Reply
  12. Patrick says

    October 31, 2019 at 6:19 pm

    Hi Carrie – great resource! Question for you: I have oversight of a website which is built on Genesis and I need to update Genesis and WordPress to 5.24. Is it advisable to update Genesis first or WordPress first?

    Reply
    • Carrie Dils says

      November 13, 2019 at 5:54 pm

      Hey Patrick! Update Genesis first, then WordPress. But be sure to update in a staging environment first, not on the live site! 🙂

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Search

Articles

  • Business
  • Front-End Development
  • Genesis Framework
  • Mental Health
  • Web Accessibility
  • WordPress Tutorials

Looking for recommendations?

My Tech Toolbox

Favorite Business Books

  • OfficeHours.FM
  • My Courses on LinkedIN Learning
  • The Fearless Freelancer®

© 2019 CWD Holdings LLC