【问题标题】:Search filter exact match搜索过滤器完全匹配
【发布时间】:2011-08-24 20:47:40
【问题描述】:

我在 Wordpress 中使用的搜索插件 (Relavenssi) 允许用户在搜索词中添加 quotes 以搜索短语,例如“搜索短语”。

我将如何对其进行编码,以便当用户选择一个名为“精确匹配”的单选框/复选框时,quotes 会自动添加到搜索查询中,而不是由用户添加到搜索框中?

非常感谢您的帮助,S。

搜索表单代码如下:

                  <form action="<?php bloginfo('home'); ?>/" method="post">
                  <div class="search-icon">     
                      <label for="search" accesskey="4" class="hidden">Search the site</label>                 
                      <input type="text" name="s" id="search" value="Enter search term" onblur="this.value = this.value || this.defaultValue;" onfocus="this.value = '';" />                
                      <input type="submit" name="submit" value="GO" class="s-btn" />
                      <p><a href="#" id="search-anchor">Search Options</a></p>
                      <div class="option-slide">
                      <input type="radio" name="sentence" value="" checked="checked" /><label>All Words</label><br />                          
                      <input type="radio" name="sentence" value="???" /><label>Exact Match</label>  
                      </div>   
                  </div>
              </form>      

编辑:根据下面@Tristar Web Design 的回答,我现在在我的搜索表单下方添加了这个php 代码,尽管它不能正常工作。它回显正常,但没有将查询传回。如何将更新的搜索查询传递/发送回 Wordpress?

                if(isset($_POST['s']) && $_POST['sentence'] == 'exact') {
                    $_POST['s'] = '"'.get_search_query().'"';
                    echo $_POST['s'];
                } else {
                    echo "2";
                }   

【问题讨论】:

    标签: wordpress search


    【解决方案1】:

    我猜有几种方法。

    1. 如果选择了完全匹配,请使用 PHP 并使其在搜索值前加上引号。
    2. 使用 Javascript 并使其在 onclick 字段内预先和附加引号,以便发送的值具有应用到它的引号。我可能会尝试这种 javascript 方法!

    编辑:

    也许可以考虑这个jQuery方法(这个方法假设已经加载了jQuery,并且我还添加了自己的noConflict()变量)-

    <script type="text/javascript">
        var $j = jQuery.noConflict();
    
        function addquo() {
        if($j('#s').val()) {
        var text = '"'+ $j('#s').val() +'"';
                $j('#s').val(text);
        }
        }
    
        function removequo() {
        if($j('#s').val()) {
    
        var txt = $j('#s').val();
                $j('#s').val(txt.replace(/"/g, ''));
    
        }
        }
    
    </script>
    
    <form action="/" id="searchform" method="get" role="search">
    <div><label for="s" class="screen-reader-text">Search for:</label>
    <input type="text" id="s" name="s" value="">
    <input type="submit" value="Search" id="searchsubmit">
    <input type="radio" name="sentence" value="" onclick="javascript:addquo();" /><label>All Words</label><br />
    <input type="radio" name="sentence" value="???" checked="checked" onclick="javascript:removequo();" /><label>Exact Match</label>
    </div>
    </form>
    

    【讨论】:

    • 谢谢。两种方法都试过了,但只能让 php 稍微起作用 - 请参阅已编辑的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多