Instantly share code, notes, and snippets.

@hasti /search.php
Last active Nov 1, 2016

Embed
What would you like to do?
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