独立搜索工具,可返回与帖子标题完全匹配的内容

时间:2014-12-20 作者:Eddie

我想创建一个非常简单的搜索工具,它独立于常规搜索工作。

概念很简单,搜索特定帖子类型的所有标题以获得精确匹配,如果找到匹配项,则直接转到帖子。如果不匹配,则返回未找到匹配项。

我相信这是难以置信的简单,但我正在努力。如果is\\u search()为true,我尝试遍历$wp\\u query的结果,但这依赖于现有的搜索工具,我真的希望它们分开。

2 个回复
最合适的回答,由SO网友:Eddie 整理而成

这让我朝着正确的方向前进。这是我想到的。我决定创建一个短代码,这样我就可以把它放到任何需要的地方。使用get\\u page\\u by\\u title()还可以查找帖子,即使它们的帖子类型在传统搜索中是隐藏的。

function esm_search($atts) {
        extract(shortcode_atts(array(
                "label_codeword" => \'Codeword\',
                "label_submit" => \'Submit\'
        ), $atts));

        if ($_SERVER[\'REQUEST_METHOD\'] == \'POST\') {
                $error = false;
                foreach ($_POST as $field => $value) {
                        if (get_magic_quotes_gpc()) {
                                $value = stripslashes($value);
                        }
                        $form_data[$field] = strip_tags($value);
                }

                if( $form_data[\'codeword\'] != "") {
                        $esmID = get_page_by_title($form_data[\'codeword\'],"","esm" );
                        if( $esmID ) {
                                wp_redirect( get_permalink( $esmID ) );
                        }else{
                                $result = \'That codeword doesn\\\'t exist.\';
                        }

                }else{
                        $result = "Please enter a codeword.";
                }
        }

        if( $result != "" ) {
                $info = \'<div class="info">\'.$result.\'</div>\';
        }

        $esm_form = \'<form method="post" action="\'.get_permalink().\'">
                <div>
                        <input type="text" name="codeword" id="esm_codeword" size="6" maxlength="6" value="\'.$form_data[\'codeword\'].\'" />
                </div>
                <div>
                        <input type="submit" value="Sumbit" name="send" id="esm_send" />
                </div>
        </form>\';

        if($sent == true) {
                return $info;
        } else {
                return $info.$esm_form;
        }
}
我使用的P.Sthis tutorial 作为代码的模板。

SO网友:Rarst

弯腰真的很烦人WP_Query 为了它。但是有方便get_page_by_title() 可以做到这一点的函数。尽管名称不同,但它允许您将其他post类型作为第三个参数传递。

结束