最近,我们向您展示了如何限制WordPress中特定帖子类型的搜索结果。现在我们将向您展示如何完全创建不同/多个搜索表单。这样,每个表单可以限于搜索特定的帖子类型。虽然这不是很难,但它需要您对WordPress模板有基本的了解。

首先,您需要一些搜索表单。将以下代码放在您希望它们位于博客中的任何位置:


<form method="get" id="searchform" action="<?php bloginfo("home"); ?>/">
<input type="text" value="" name="s" id="s" />
<input type="hidden" name="search-type" value="normal" />
<input name="submit" type="submit" value="Go" />
</form>

为了指定此表单将执行的搜索类型,只需更改隐藏字段的值即可。现在它被设置为“正常”但它可以是你想要的任何东西。接下来,我们需要修改search.php文件。打开它并用这段代码替换其中的所有内容(首先将现有代码复制到剪贴板,你需要在一分钟内完成):


<?php
if(isset($_GET["search-type"])) {
    $type = $_GET["search-type"];
    if($type == "random") {
        load_template(TEMPLATEPATH . "/normal-search.php");
    } elseif($type == "books") {
        load_template(TEMPLATEPATH . "/books-search.php");
    }
}
?>

所以我们假设你有两种搜索形式,普通和书籍。此代码只是将搜索重定向到处理该特定查询的php文件。现在我们只需要创建这些文件。所以,继续创建一个normal-search.phpbooks-search.php文件(只需用您正在使用的任何值替换“normal”和“books”)。

现在,在正常搜索中.php复制并粘贴以下代码


$args = array( "post_type" => "post" );
$args = array_merge( $args, $wp_query->query );
query_posts( $args );

粘贴您从search.php文件复制的剪贴板后,立即粘贴循环代码。总之,此代码将仅搜索您的常规博客帖子。现在,在books-search.php文件中添加这段代码并再次粘贴它后面的循环:


$args = array( "post_type" => "books" );
$args = array_merge( $args, $wp_query->query );
query_posts( $args );

评论被关闭。