我又遇到了那些“wtf”问题之一。我不明白为什么我的搜索表单没有显示结果。请参阅此网页:http://sindlar.cz/exemplum/?lang=en
头部有get_search_form()。我还创建了 searchform.php 和 search.php。请参阅search.php:
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'shape' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
</header><!-- .page-header -->
<?php shape_content_nav(); ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'search' ); ?>
<?php endwhile; ?>
<?php shape_content_nav( 'nav-below' ); ?>
<?php else : ?>
<?php get_template_part( 'no-results', 'search' ); ?>
<?php endif; ?>
</div><!-- #content .site-content -->
</section><!-- #primary .content-area -->
点击搜索按钮后会打开搜索页面,但没有结果。也许数据库有问题或者什么?你有什么想法?我应该在 function.php 中添加一些东西吗?
我还注意到搜索网站的实际内容和虚构的文字之间存在差异。例如,如果您输入“关于我们”(这是我网站中的实际页面),它将显示 search.php 但没有结果。另一方面,如果您输入“Big Truck”或“fsdgwdhs”(我编的),它会发回search.php以外的其他页面。所以我认为 wordpress 可能知道有一些结果,但它没有显示它们。我不知道。
有人可以帮助我吗?
谢谢!
以下是解决搜索问题的方法:
Via FTP/Cpanel go to wp-content - themes - theme name you are using - functions.
Open theme-functions.php in a text editor.
Replace with the code below
function gt_search_filter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','gt_search_filter');
*/
我意识到这是一篇旧帖子,但在我的搜索中,了解
pre_get_posts
不仅适用于分页,还适用于自定义搜索查询,这很有帮助。
当涉及到 search.php 时,下面的情况是有效的。我有两种自定义帖子类型,需要将搜索结果合并到主搜索查询中。我认为我应该包含普通帖子(博客帖子)中的任何内容以及包含我正在搜索的单词的任何页面内容。
将下面的代码添加到functions.php,但请记住,我指定了
is_search()
,因为我希望将所有结果发布到search.php(wordpress模板特定页面)。
在
search.php
上,只需调用基本循环即可。不要以任何方式合并 wp_query。
function search_query( \WP_Query $query ) {
if ( $query -> is_search() && $query -> is_main_query() ) {
$query -> set('posts_per_page', -1);
$query -> set('post_status', 'publish');
$query -> set('post_type', array('arizona_wine', 'arizona_beer', 'post', 'page'));
}
}
add_action( 'pre_get_posts', 'search_query' );
<section id="primary" class="site-content">
<div id="content" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentytwelve' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
</header>
<?php twentytwelve_content_nav( 'nav-above' ); ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php twentytwelve_content_nav( 'nav-below' ); ?>
<?php else : ?>
<article id="post-0" class="post no-results not-found">
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
</header>
<div class="entry-content">
<p><?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentytwelve' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
</article><!-- #post-0 -->
<?php endif; ?>
</div><!-- #content -->
</section><!-- #primary -->
将此代码与您的类和 CSS 一起放入 search.php 文件中