2.6.1.search.php
Display wppizza menu items in search results keeping prices and other relevant WPPizza menu item information intact to work with your theme
Only really used/needed if using WPPizza search widget
with wppizza menu items enabled or equivalent shortcode
NOTE: although the following would work the same way with your normal/main theme the below assumes you are using a child theme. If you are not using a child theme, now would be a good time to create one to allow you to update your main theme when an update becomes available without loosing any of your changes or additions you make now or in the future. If you do not know how to create a child theme or why to use one, please refer to the wordpress codex here.
How to:
- create the following directory structure in your child theme:
wppizza/markup/search
so your whole structure will look something like this/[path]/[to]/[my]/[child-theme]/wppizza/markup/search
- locate the search.php file in your theme directory and copy it to the above created directory so the file structure will now look like this
/[path]/[to]/[my]/[child-theme]/wppizza/markup/search/search.php
NOTE: Some themes do not provide a search.php file. I would suggest you ask the theme developer to create/add one or ask him/her which template part is responsible for displaying search results.
Unfortunately, I will not be able to help you with your particular theme if this is the case. - open this “search.php” file in a suitable text editor
- typically you will find something like
while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', 'search' ); endwhile;
- REPLACE –
get_template_part( 'template-parts/content', 'search' );
with
if(function_exists('wppizza_search_results_get_template_part')){ wppizza_search_results_get_template_part('template-parts/content', 'search' ); }else{ get_template_part( 'template-parts/content', 'search' ); }
leaving any codeblocks before and after intact and save
- the whole file will now be similar to this
<?php get_header(); ?> <section id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : ?> <header class="page-header"> <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentysixteen' ), '<span>' . esc_html( get_search_query() ) . '</span>' ); ?></h1> </header><!-- .page-header --> <?php // Start the loop. while ( have_posts() ) : the_post(); if(function_exists('wppizza_search_results_get_template_part')){ wppizza_search_results_get_template_part('template-parts/content', 'search' ); }else{ get_template_part( 'template-parts/content', 'search' ); } // End the loop. endwhile; // Previous/next page navigation. the_posts_pagination( array( 'prev_text' => __( 'Previous page', 'twentysixteen' ), 'next_text' => __( 'Next page', 'twentysixteen' ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>', ) ); // If no content, include the "No posts found" template. else : get_template_part( 'template-parts/content', 'none' ); endif; ?> </main><!-- .site-main --> </section><!-- .content-area --> <?php get_sidebar(); ?> <?php get_footer(); ?>
- make sure the parameters match. i.e if your original template part is
get_template_part( 'abcdef', 'xyz' );
replace it with
if(function_exists('wppizza_search_results_get_template_part')){ wppizza_search_results_get_template_part('abcdef', 'xyz' ); }else{ get_template_part( 'abcdef', 'xyz' ); }
- make sure you keep everything before and after the changed codeblock intact
- save the file
- you should now have the same layout for a single wppizza item in your search results as you have when displaying categories (see below)
Quick summary:
- COPY
/[your]/[path]/[to]/wp-content/themes/my-theme/search.php
TO/[your]/[path]/[to]/wp-content/themes/[my-child-theme]/wppizza/markup/search/search.php
- REPLACE anything in created/copied search.php like
# - codeblock to replace - # while ( have_posts() ) : the_post(); get_template_part( 'abcdef', 'xyz' ); endwhile; # - codeblock to replace end - #
width
# - codeblock replace with - # if(function_exists('wppizza_search_results_get_template_part')){ wppizza_search_results_get_template_part('abcdef', 'xyz' ); }else{ get_template_part( 'abcdef', 'xyz' ); } # - codeblock replace with end - #
- keep everything else
Additional Notes:
The output generated is in fact a shortcode like so : echo do_shortcode("[wppizza single='9' showadditives='0']");
(where ‘9’ would be the appropriate post_id)
The arguments of which are filterable if you want , using ‘wppizza_filter_single_post_arguments’ hook like so
add_filter('wppizza_filter_single_post_arguments', 'myprefix_filter_single_wppizza_items', 10, 2);
function myprefix_allow_comments_for_single_wppizza_items($args, $terms){
/ - customise arguments as required -/
return $args;
}
See wppizza shortcode documentation as to what arguments exist for single items and/or wordpress codex about how to use filters if you are unfimiliar with filter hooks
documentor id 5