如何将“空搜索”功能代码集成到现有的search.php代码中

时间:2019-02-11 00:14:51

标签: php wordpress

我有一些自定义功能,已将它们放入search.php文件中的子主题中。搜索功能仍然是标准的wordpress,但是自定义代码添加了标题,并且搜索词位于结果的顶部。一切都很好。我遇到的问题是,当输入空白搜索词时,我想返回自定义消息而不是搜索结果。我已经能够使它作为独立的功能工作,但是我不知道如何在不破坏现有功能的情况下将其集成到现有代码中。

我试图通过几种方式更新现有代码来添加用于返回空白搜索结果的自定义消息的代码,但是它要么不起作用,要么显示消息,要么显示搜索结果,或者完全中断搜索。

您可以在此处使用边栏中的搜索来查看实际的操作:https://usyouthbilliards.com/news-and-announcements/

这是我用来为空白搜索词生成消息的功能:

 function SearchFilter($query) {
// If 's' request variable is set but empty
if (isset($_GET['s']) && empty($_GET['s']) && $query->is_main_query()){
    $query->is_search = true;
    $query->is_home = false;
}
return $query;}
add_filter('pre_get_posts','SearchFilter');

这里是工作代码,当搜索一个空白术语时会生成结果消息(尝试从中获取该功能并将其添加到我现在拥有的功能中,而不会更改搜索的工作方式):

<?php if (have_posts() && strlen( trim(get_search_query()) ) != 0 ) :      while (have_posts()) : the_post(); ?>

  <a href="<?php the_permalink();?>">
<h4><?php the_title();?></h4>

</a>
<?php the_excerpt();?>
<hr>


<?php endwhile; else:?>


<h3>No results match your search.</h3>


<?php endif; ?>

这是当前的search.php代码(有效):

    <?php get_header(); ?>

<div id="main-content">
<div class="container">
    <div id="content-area" class="clearfix">
        <div id="left-area">

<!-- mp search results title code start here -->
<?php if ( have_posts() ) : ?>
    <header class="search-results-title">
        <h2><?php printf( __( 'Search Results for &quot;%s&quot;', 'Divi' ), '<span>' . get_search_query() . '</span>' ); ?></span></h2>
        <hr class="results_title_line" align="left">
    </header>
<?php endif; ?>                 
<!-- mp search results title code start here -->    

<?php
        if ( have_posts() ) :
            while ( have_posts() ) : the_post();
                $post_format = et_pb_post_format(); ?>

                <article id="post-<?php the_ID(); ?>"     <?php post_class( 'et_pb_post' ); ?>>

            <?php
                $thumb = '';

                $width = (int) apply_filters( 'et_pb_index_blog_image_width', 1080 );

                $height = (int) apply_filters( 'et_pb_index_blog_image_height', 675 );
                $classtext = 'et_pb_post_main_image';
                $titletext = get_the_title();
                $thumbnail = get_thumbnail( $width, $height, $classtext, $titletext, $titletext, false, 'Blogimage' );
                $thumb = $thumbnail["thumb"];

                et_divi_post_format_content();

                if ( ! in_array( $post_format, array( 'link', 'audio', 'quote' ) ) ) {
                    if ( 'video' === $post_format && false !== ( $first_video = et_get_first_video() ) ) :
                        printf(
                            '<div class="et_main_video_container">
                                %1$s
                            </div>',
                            et_core_esc_previously( $first_video )
                        );
                    elseif ( ! in_array( $post_format, array( 'gallery' ) ) && 'on' === et_get_option( 'divi_thumbnails_index', 'on' ) && '' !== $thumb ) : ?>
                        <a class="entry-featured-image-url" href="<?php the_permalink(); ?>">
                            <?php print_thumbnail( $thumb, $thumbnail["use_timthumb"], $titletext, $width, $height ); ?>
                        </a>
                <?php
                    elseif ( 'gallery' === $post_format ) :
                        et_pb_gallery_images();
                    endif;
                } ?>

            <?php if ( ! in_array( $post_format, array( 'link', 'audio', 'quote' ) ) ) : ?>
                <?php if ( ! in_array( $post_format, array( 'link', 'audio' ) ) ) : ?>
                    <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                <?php endif; ?>

                <?php
                    et_divi_post_meta();

                    if ( 'on' !== et_get_option( 'divi_blog_style', 'false' ) || ( is_search() && ( 'on' === get_post_meta( get_the_ID(), '_et_pb_use_builder', true ) ) ) ) {
                        truncate_post( 270 );
                    } else {
                        the_content();
                    }
                ?>
            <?php endif; ?>

                </article> <!-- .et_pb_post -->
        <?php
                endwhile;

                if ( function_exists( 'wp_pagenavi' ) )
                    wp_pagenavi();
                else
                    get_template_part( 'includes/navigation', 'index' );
            else :
                get_template_part( 'includes/no-results', 'index' );
            endif;
        ?>
        </div> <!-- #left-area -->


        <?php get_sidebar(); ?>
</div></div><!-- #content-area -->
<!-- .container -->
<!-- #main-content -->

<?php

get_footer();?>

0 个答案:

没有答案