自定义搜索结果页面不使用空搜索

时间:2020-06-28 作者:mroulston

我有一个自定义的搜索结果页面,除了提交一个空的输入框外,它工作正常。

提交空输入框时,结果页面上的标题显示;找到XX个结果“;(网站上的页面/帖子总数),但页面上未列出任何结果。

因此,显示页眉计数的代码似乎正在查找我网站上的每个页面,而显示结果的实际代码却什么也找不到。我不在乎这些空搜索使用哪种行为(显示所有内容vs.不显示任何内容),但我更希望行为在标题中的计数和实际结果之间保持一致。

这是标题的代码(返回“找到XX个结果”):

<h2>Search results for 
<?php 
  $allsearch = new WP_Query("s=$s&showposts=-1");
  $key = esc_html($s, 1);
  $count = $allsearch->post_count; 
  _e(\'\'); _e(\'&#8220;\'); _e(\'<span class="searchTerm">\');
  echo $key; 
  _e(\'</span>\'); _e(\'&#8221;\'); _e(\' - \');
  echo $count . \' \'; _e(\'found\');
  wp_reset_query(); 
?>
</h2>
这是实际结果的代码(不返回任何结果):

<div id="searchContent">
<?php
  global $query_string;
  query_posts( $query_string . \'&posts_per_page=20\' );
  while(have_posts()) : the_post(); ?>
    <p>
      <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
      <span class="searchDate"><?php the_time(\'j F Y\'); ?></span>
    </p>
<?php endwhile; ?>
</div> <!-- search content -->

1 个回复
最合适的回答,由SO网友:mozboz 整理而成

我不太熟悉搜索结果页面以及如何编辑它们,但解决这个问题的一个快速方法是在代码的第一位检查空字符串并说;请输入搜索词“;如果没有人输入的话。您可以通过以下方式实现:

<?php
  if (empty($s)) {
     _e(\'Please enter a search term\');
  } else {
    $allsearch = new WP_Query("s=$s&showposts=-1");
    $key = esc_html($s, 1);
    $count = $allsearch->post_count; 
    _e(\'\'); _e(\'&#8220;\'); _e(\'<span class="searchTerm">\');
    echo $key; 
    _e(\'</span>\'); _e(\'&#8221;\'); _e(\' - \');
    echo $count . \' \'; _e(\'found\');
    wp_reset_query(); 
  }
?>
与您的问题无关的额外内容:对于第二位代码,这里的文档可能值得一看https://developer.wordpress.org/reference/functions/query_posts/ 并切换到使用get_posts, 但正如我所说,我不确定在这种情况下,对于搜索页面使用query\\u帖子是否合适。当然,医生说它不应该用在你自己的主题中。

相关推荐

子主题不覆盖父主题php文件

我不熟悉Wordpress和儿童主题的工作原理。我的子主题我正在尝试覆盖子目录中的两个文件。我复制了父文件并在子主题中编辑了它们,但更改不会反映在父主题中。我正在尝试更改功能图像大小的代码。我成功地在parent中更改了代码以测试它,并且它正常工作。但子主题并没有覆盖它。/public_html/wp-content/themes/sahifa/framework/functions/theme-functions.php /public_html/wp-content/themes/sa