首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress从空搜索中排除搜索页

Wordpress从空搜索中排除搜索页
EN

Stack Overflow用户
提问于 2013-12-21 21:09:23
回答 3查看 2.2K关注 0票数 2

我创建了一个搜索页面,并使用基于用户输入的循环返回结果。问题是,当我进入搜索页面时,当用户没有输入任何内容时,它就会显示搜索页面标题。有什么方法可以从结果中删除搜索页面吗?我试过插件,但它们不工作-我确信我的循环有问题,但我没有看到它。

我的代码是:

代码语言:javascript
复制
<?php
/*
Template Name: Search Page
?>
<?php get_header(); ?>

<section id="post-<?php the_title(); ?>"  class="search-section left <?php post_class(); ?>" role="main">

    <div class="search-input">
        <form action="<?php echo home_url(); ?>" method="get" role="search" class="search-big">
            <input type="text" name="s" id="s" class="search-big" placeholder="Type in your search and press enter..." />
        </form>
    </div>

    <div class="search-result">

    <?php if ( have_posts() ) : ?>

            <h2><?php if( !empty( $_GET) ) { printf( __( 'Search results for: %s', 'xma' ), '<span>' . get_search_query() . '</span>' ); } ?></h2>

            <?php while ( have_posts() ) : the_post(); ?>

                <div class="search-single-result">

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

            <?php endwhile; ?>

        <?php else : ?>

           <h3><?php _e('Sorry, we couldn\'t find anything that matched your search.', 'xma' ); ?></h3>

        <?php endif; ?>
    </div>

</section>
<aside class="search-sidebar right">
    <?php if ( is_active_sidebar( 'sidebar-4' ) ) : ?>
        <?php dynamic_sidebar( 'sidebar-4' ); ?>
    <?php endif; ?>

</aside>

正在发生的bug的屏幕截图:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-21 21:27:57

从我的理解来看,你想要的是,如果用户进入搜索页面,他们就不会在页面上看到一个标题,上面写着“搜索结果:”,在冒号之后没有任何内容。我有一个建议的代码更改,这将消除标题,并允许您放置一条消息,供用户搜索,显示结果。

代码语言:javascript
复制
<?php
/*
Template Name: Search Page
?>
<?php get_header(); ?>

<section id="post-<?php the_title(); ?>"  class="search-section left <?php post_class(); ?>" role="main">

  <div class="search-input">
    <form action="<?php echo home_url(); ?>" method="get" role="search" class="search-big">
      <input type="text" name="s" id="s" class="search-big" placeholder="Type in your search and press enter..." />
    </form>
  </div>

  <div class="search-result">

    <?php /* ADD THIS CODE */>
    <?php $search_term = get_search_query(); ?>
    <?php if (!empty($search_term)): /* if search term is not empty */ ?>
    <?php /* END ADD THIS CODE */>

      <?php if ( have_posts() ) : ?>

        <h2><?php if( !empty( $_GET) ) { printf( __( 'Search results for: %s', 'xma' ), '<span>' . get_search_query() . '</span>' ); } ?></h2>

        <?php while ( have_posts() ) : the_post(); ?>

          <div class="search-single-result">
            <a href="<?php the_permalink(); ?>"><h4><?php the_title(); ?></h4>
            <p><?php the_excerpt(); ?></p></a>
          </div>

        <?php endwhile; ?>

      <?php else : ?>

        <h3><?php _e('Sorry, we couldn\'t find anything that matched your search.', 'xma' ); ?></h3>

      <?php endif; ?>

    <?php /* ADD THIS CODE */>
    <?php else: /* if search term is empty */ ?>
      <p>Please enter some search text to display search results.</p>
    <?php endif; ?>
    <?php /* END ADD THIS CODE */>

  </div>

</section>
<aside class="search-sidebar right">
  <?php if ( is_active_sidebar( 'sidebar-4' ) ) : ?>
    <?php dynamic_sidebar( 'sidebar-4' ); ?>
  <?php endif; ?>
</aside>

有两个代码块要添加,一个在顶部,一个向下低。希望这能有所帮助!

编辑(澄清后)

在我们讨论完之后,问题似乎与以下事实有关:您有一个搜索页面的自定义URL,类似于'/ search ',它实际上是一个标记为'Search‘的WordPress页面。问题是,当您加载此搜索页时,您的循环中已经有一个结果,即当前页。您需要做的是首先检查当前循环是否用于搜索,还是用于显示搜索页面。这样做:

代码语言:javascript
复制
<?php
/*
Template Name: Search Page
?>
<?php get_header(); ?>

<section id="post-<?php the_title(); ?>"  class="search-section left <?php post_class(); ?>" role="main">

  <div class="search-input">
    <form action="<?php echo home_url(); ?>" method="get" role="search" class="search-big">
      <input type="text" name="s" id="s" class="search-big" placeholder="Type in your search and press enter..." />
    </form>
  </div>

  <div class="search-result">

    <?php /* CHANGE THESE LINES FROM ABOVE, KEEP LOWER LINES */ ?>
    <?php global $wp_query; ?>
    <?php if (!empty($wp_query->query_vars['s'])): ?>
    <?php /* END CHANGE THESE LINES FROM ABOVE, KEEP LOWER LINES */ ?>

      <?php if ( have_posts() ) : ?>

        <h2><?php if( !empty( $_GET) ) { printf( __( 'Search results for: %s', 'xma' ), '<span>' . get_search_query() . '</span>' ); } ?></h2>

        <?php while ( have_posts() ) : the_post(); ?>

          <div class="search-single-result">
            <a href="<?php the_permalink(); ?>"><h4><?php the_title(); ?></h4>
            <p><?php the_excerpt(); ?></p></a>
          </div>

        <?php endwhile; ?>

      <?php else : ?>

        <h3><?php _e('Sorry, we couldn\'t find anything that matched your search.', 'xma' ); ?></h3>

      <?php endif; ?>

    <?php /* ADD THIS CODE */>
    <?php else: /* if search term is empty */ ?>
      <p>Please enter some search text to display search results.</p>
    <?php endif; ?>
    <?php /* END ADD THIS CODE */>

  </div>

</section>
<aside class="search-sidebar right">
  <?php if ( is_active_sidebar( 'sidebar-4' ) ) : ?>
    <?php dynamic_sidebar( 'sidebar-4' ); ?>
  <?php endif; ?>
</aside>

保持较低的线条,并将这些上线改为我所拥有的。这将检查您的循环实际上是包含搜索结果的循环。如果是,则绘制结果,如果不是,则显示下面的消息。

票数 3
EN

Stack Overflow用户

发布于 2013-12-21 21:22:17

代码语言:javascript
复制
    Try this:

    <div class="search-input">
    <form action="<?php echo home_url(); ?>" method="get" role="search" class="search-big">
    <input type="text" name="s" id="s" class="search-big" placeholder="Type in your search and press enter..." />
    </form>
    </div>

   <div class="search-result">
   <h2><?php if( !empty( $_GET) ) { printf( __( 'Search results for: %s', 'xma' ),      '<span>' . get_search_query() . '</span>' ); } ?></h2>

   <?php if ( have_posts() ) : ?>

        <?php while ( have_posts() ) : the_post(); ?>

            <div class="search-single-result">

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

        <?php endwhile; ?>

    <?php else : ?>

       <h3><?php _e('Sorry, we couldn\'t find anything that matched your search.', 'xma' ); ?></h3>
票数 1
EN

Stack Overflow用户

发布于 2014-07-17 08:59:47

试试我找到的WordPress StackExchange的方法

代码语言:javascript
复制
$exclude_pages = array('music', 'contact');
$exclude_post_types = array('music', 'any_here');

if ( have_posts() ) : while ( have_posts() ) : the_post();
if ( is_page() && ! empty($exclude_pages) && (
in_array($post->post_name, (array)$exclude_pages) ||
in_array($post->post_title, (array)$exclude_pages)
) ||
( is_single() && in_array(get_post_type(), (array)$exclude_post_types) ) ) continue;

如果它有效,或者需要改进,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20723570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档