Add Loop Buddy Support to Genesis

Code Snippet to add iTheme Loop Buddy support to Genesis Framework for WordPress.

Add this code to the functions.php file of your Genesis Child theme to add support for iThemes Loop Buddy.

add_theme_support('loop-standard');
if ( ! function_exists( 'dynamic_loop' ) ) {
    function dynamic_loop() {
        global $dynamic_loop_handlers;
        if ( empty( $dynamic_loop_handlers ) || ! is_array( $dynamic_loop_handlers ) )
            return false;
        ksort( $dynamic_loop_handlers );
        foreach ( (array) $dynamic_loop_handlers as $handlers ) {
            foreach ( (array) $handlers as $function ) {
                if ( is_callable( $function ) && ( false != call_user_func( $function ) ) ) {
                    return true;
                }
            }
        }
        return false;
    }
}
if ( ! function_exists( 'register_dynamic_loop_handler' ) ) {
    function register_dynamic_loop_handler( $function, $priority = 10 ) {
        global $dynamic_loop_handlers;
        if ( ! is_numeric( $priority ) )
            $priority = 10;
        if ( ! isset( $dynamic_loop_handlers ) || ! is_array( $dynamic_loop_handlers ) )
            $dynamic_loop_handlers = array();
        if ( ! isset( $dynamic_loop_handlers[$priority] ) || ! is_array( $dynamic_loop_handlers[$priority] ) )
            $dynamic_loop_handlers[$priority] = array();
        $dynamic_loop_handlers[$priority][] = $function;
    }
}
remove_action('genesis_loop', 'genesis_do_loop');
add_action('genesis_loop', 'add_loopbuddy_support');
function add_loopbuddy_support() {
	if (!dynamic_loop()) :
	if ( is_page_template( 'page_blog.php' ) ) {
		$include = genesis_get_option( 'blog_cat' );
		$exclude = genesis_get_option( 'blog_cat_exclude' ) ? explode( ',', str_replace( ' ', '', genesis_get_option( 'blog_cat_exclude' ) ) ) : '';
		$paged   = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
		/** Easter Egg */
		$query_args = wp_parse_args(
			genesis_get_custom_field( 'query_args' ),
			array(
				'cat'              => $include,
				'category__not_in' => $exclude,
				'showposts'        => genesis_get_option( 'blog_cat_num' ),
				'paged'            => $paged,
			)
		);
		genesis_custom_loop( $query_args );
	} else {
		genesis_standard_loop();
	}
	endif;
}

Hire a WordPress Expert

Get hourly and project based theme customization, theme tweaks, and development help from an experienced Kelowna WordPress developer.  We’ve been building WordPress websites full-time for over a decade. We can help you.