Genesis Framework Child Theme Custom Search Template
<?php | |
/** | |
* Author: Hastimal Shah | |
* Link: http://hastishah.com/ | |
* Email: hasti@hastishah.com | |
*/ | |
/* If you dont want to use any force layout then please comment line no 10 to 20 */ | |
//* Force content-sidebar layout setting | |
//add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_content_sidebar' ); // Remove // to uncomment the code | |
//* Force sidebar-content layout setting | |
//add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_content' ); | |
//* Force content-sidebar-sidebar layout setting | |
//add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_content_sidebar_sidebar' ); | |
//* Force sidebar-sidebar-content layout setting | |
//add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_sidebar_content' ); | |
//* Force sidebar-content-sidebar layout setting | |
//add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_content_sidebar' ); | |
//* Force full-width-content layout setting | |
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' ); | |
/* Remove the default loop */ | |
remove_action( 'genesis_loop', 'genesis_do_loop' ); | |
add_action( 'genesis_loop', 'hs_do_search_loop' ); | |
/** | |
* Outputs a custom loop | |
* | |
* @global mixed $paged current page number if paginated | |
* @return void | |
*/ | |
function hs_do_search_loop() { | |
// create an array variable with specific post types in your desired order | |
$post_types = array('news','article', 'page', 'post' ); // other custom post type can be added. | |
echo '<div class="search-content">'; | |
foreach ( $post_types as $post_type ) { | |
// get the search term entered by user | |
$s = isset( $_GET["s"] ) ? $_GET["s"] : ""; | |
// accepts any wp_query args | |
$args = (array( | |
's' => $s, | |
'post_type' => $post_type, | |
'posts_per_page' => 5, | |
'order' => 'ASC', | |
'orderby' => 'title' | |
)); | |
echo '<div class="post-type '. $post_type .'"><div class="post-type-heading">'. $post_type . 's</div>'; | |
// remove post info | |
remove_action( 'genesis_entry_header', 'genesis_post_info', 12 ); | |
// remove post image (from theme settings) | |
remove_action( 'genesis_entry_content', 'genesis_do_post_image', 8 ); | |
// remove entry content | |
// remove_action( 'genesis_entry_content', 'genesis_do_post_content' ); | |
// remove post content nav | |
remove_action( 'genesis_entry_content', 'genesis_do_post_content_nav', 12 ); | |
remove_action( 'genesis_entry_content', 'genesis_do_post_permalink', 14 ); | |
// force content limit | |
add_filter( 'genesis_pre_get_option_content_archive_limit', 'hs_content_limit' ); | |
// modify the Content Limit read more link | |
add_filter( 'get_the_content_more_link', 'hs_read_more_link' ); | |
// force excerpts | |
// add_filter( 'genesis_pre_get_option_content_archive', 'hs_show_excerpts' ); | |
// modify the Excerpt read more link | |
add_filter( 'excerpt_more', 'hs_excerpt_read_more' ); | |
// modify the length of post excerpts | |
add_filter( 'excerpt_length', 'hs_excerpt_length' ); | |
// remove entry footer | |
remove_action( 'genesis_entry_footer', 'genesis_entry_footer_markup_open', 5 ); | |
remove_action( 'genesis_entry_footer', 'genesis_entry_footer_markup_close', 15 ); | |
remove_action( 'genesis_entry_footer', 'genesis_post_meta' ); | |
// remove archive pagination | |
remove_action( 'genesis_after_endwhile', 'genesis_posts_nav' ); | |
// custom genesis loop with the above query parameters and hooks | |
genesis_custom_loop( $args ); | |
echo '</div>'; | |
} | |
echo '</div>'; // .search-content | |
} | |
function hs_content_limit() { | |
return '150'; // number of characters | |
} | |
function hs_read_more_link() { | |
return '... <a class="more-link" href="' . get_permalink() . '">Continue Reading</a>'; | |
} | |
function hs_show_excerpts() { | |
return 'excerpts'; | |
} | |
function hs_excerpt_read_more( $more ) { | |
return '... <a class="more-link" href="' . get_permalink() . '">Continue Reading</a>'; | |
} | |
function hs_excerpt_length( $length ) { | |
return 30; // pull first 30 words | |
} | |
genesis(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment