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 experience Kelowna WordPress developer. Or, if you’re in Kelowna and need a new WordPress website for your business, visit our Website Design page now to get started.