gpt4 book ai didi

php - Wordpress 从空搜索中排除搜索页面

转载 作者:行者123 更新时间:2023-12-02 04:41:38 25 4
gpt4 key购买 nike

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

我的代码是:

<?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>

正在发生的错误的屏幕截图:

screenshot of bug

最佳答案

根据我的理解,基本上,您需要这样,如果用户转到搜索页面,他们不会在页面上看到冒号后没有任何内容的“搜索结果:”。我有一个建议的代码更改,将删除标题,并允许您为用户提供一条消息来搜索某些内容,以显示结果。

<?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”,它实际上是一个标记为“搜索”的 WordPress 页面。问题是当您加载此搜索页面时,您的循环中已经有一个结果,即当前页面。你需要做的是首先检查你当前的循环是为了搜索,还是为了搜索页面的展示。这样做:

<?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>

保留下面几行,并将上面的几行更改为我所拥有的。这将检查您的循环是否实际上是其中包含搜索结果的循环。如果是,则绘制结果,如果不是,则显示下面的消息。

关于php - Wordpress 从空搜索中排除搜索页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com