将loop.php更改为空搜索定制

时间:2011-08-22 作者:Josh Allen

几天来,我一直在想,为什么当我提交一个空字符串作为搜索词时,它会重定向到loop.php 插入以下代码:

<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( !(have_posts()) && !(is_search()) ) : ?>
    <h1 class="notfound-header"><?php _e( \'Not Found\', \'twentyten\' ); ?></h1>
    <p class="notfound-content"><?php _e( \'Apologies, but no results were found.\', \'twentyten\' ); ?></p>
<?php elseif ( !(have_posts()) && (is_search()) ): ?>
    <h1 class="notfound-header-search"><?php _e( \'Not Found Search\', \'twentyten\' ); ?></h1>
    <p class="notfound-content-search"><?php _e( \'Apologies, but no results were found.\', \'twentyten\' ); ?></p>
    <?php get_search_form(); ?>
<?php endif; ?>
我可能不包括is_search() 正确地但我在这个网站上工作:http://www.cirkut.net/wp/libertyguide 我想在没有提交任何内容时显示搜索表单(即只需单击主页上的搜索)。

有什么办法吗?谢谢你的帮助!

3 个回复
最合适的回答,由SO网友:Josh Allen 整理而成

在这里回答我自己的问题让我感到很难过,但以下是我所做的。

我创建了一个自定义搜索模板searchform.php 并更改了我的header.php 以反映我的自定义搜索页面。

我所做的是将搜索框名称重命名为search 而不是s 自动运行WordPresssearch.php 并且出现了404错误(仍然不确定为什么会发生,可能是我的错search.php) 然后在设置参数时使用新的WP\\u查询。虽然我的解决方案只提供了一个搜索词,但可以很容易地将其他键值对拉入参数数组。

searchform.php

<div class="search">
    <form method="get" class="search-form" id="search-form" action="<?php bloginfo( \'url\' ); ?>/search/">
    <div>
        <input class="search-text" type="text" name="search" id="search-text" value="Search this site" />
        <input class="search-submit" type="submit" name="submit" id="search-submit" value="Search" />
    </div>
    </form>
</div>

search-template.php snippet

$s = wp_specialchars(stripslashes($_GET["search"]), 1);
$search_query = array(
    \'s\' => $s
);

$search = new WP_Query($search_query);
所以本质上s 现在是search 使用自动绕过WordPresssearch.php.

如果有任何人有任何问题,请随时发表评论。

SO网友:tollmanz

当使用空字符串进行搜索时,WordPress不会进行搜索,因此不会使用您的搜索页面。在$wp_query, 一个简单命名的参数s, 表示搜索词。如果其值为\'\', WordPress不会将其指向搜索页面。

至于你如何把这个指向空的搜索页面,我不确定。我知道你可以pre_get_posts 设置s 参数,但这可能是一个非常粗糙/草率的解决方案,所以希望其他人能够帮助您完成该部分。

SO网友:ptriek

我在上找到了一个不错的/简单的jquery解决方法http://wpengineer.com/2162/fix-empty-searches/, 如果字段为空,则阻止提交:

/**
 * Stop empty searches
 *
 * @author Thomas Scholz http://toscho.de
 * @param  $ jQuery object
 * @return bool|object
 */
(function( $ ) {
   $.fn.preventEmptySubmit = function( options ) {
       var settings = {
           inputselector: "#s",
           msg          : "Don’t waste your time with an empty search!"
       };
       if ( options ) {
           $.extend( settings, options );
       };
       this.submit( function() {
           var s = $( this ).find( settings.inputselector );
           if ( ! s.val() ) {
               alert( settings.msg );
               s.focus();
               return false;
           }
           return true;
       });
       return this;
   };
})( jQuery );
和加载:

jQuery( "#searchform" ).preventEmptySubmit();
(此解决方案还显示一个警报,但我更喜欢禁用它-只需关注搜索字段…)

结束

相关推荐

Search options/filters

我正在尝试向侧栏搜索框添加一些复选框选项,similar to this, 用户可以选择是否搜索All Words, Some Word, 或者Entire phrase.我确实在搜索后找到了这个-Wordpress Search Phrases. “句子”选项似乎很有效,但其他选项则不太好。下面的代码是我目前正在处理的,但如果能得到一些帮助使其正常工作,我将不胜感激。非常感谢S(我不想为此使用插件)。<form action=\"<?php bloginfo(\'home\'); ?>