我有一个自定义的搜索结果页面,除了提交一个空的输入框外,它工作正常。
提交空输入框时,结果页面上的标题显示;找到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(\'“\'); _e(\'<span class="searchTerm">\');
echo $key;
_e(\'</span>\'); _e(\'”\'); _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 -->
最合适的回答,由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(\'“\'); _e(\'<span class="searchTerm">\');
echo $key;
_e(\'</span>\'); _e(\'”\'); _e(\' - \');
echo $count . \' \'; _e(\'found\');
wp_reset_query();
}
?>
与您的问题无关的额外内容:对于第二位代码,这里的文档可能值得一看
https://developer.wordpress.org/reference/functions/query_posts/ 并切换到使用
get_posts
, 但正如我所说,我不确定在这种情况下,对于搜索页面使用query\\u帖子是否合适。当然,医生说它不应该用在你自己的主题中。