搜索过滤器完全匹配

时间:2011-05-13 11:14:25

标签: wordpress search

我在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网页设计的答案,我现在已将此PHP代码添加到我的搜索表单下方,但它无法正常工作。它回应了确定,但没有传回查询。如何将更新的搜索查询传递/发送回Wordpress?

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

1 个答案:

答案 0 :(得分:1)

我猜这有两种方法。

  1. 如果选择完全匹配,请使用PHP并将其添加到搜索值前面并附加引号。
  2. 使用Javascript并使其在字段onclick中添加前缀和附加引号,以便发送的值应用引号。我可能会尝试这种javascript方法!
  3. 修改

    也许考虑一下这个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>