仅为自定义帖子类型创建第二个搜索页面

时间:2017-05-26 作者:jonbon

我创建了一个自定义的帖子类型,它不会显示在网站的任何地方。但是,我想从搜索表单访问数据。因为将有很多页面,我需要禁用正常搜索中显示的帖子类型,并创建第二个搜索页面,以便仅在自定义帖子类型中搜索关键字。

我读了很多页,人们给出了不同的建议,有时会说要避免某些功能,所以我不确定最新的方法是什么。

我首先将“search.php”剪切并粘贴到两个部分模板中,然后将“search.php”更改为

<?php
if(isset($_GET[\'search-type\'])) {
    $type = $_GET[\'search-type\'];
    if($type == \'custom-post-type\') {
        get_template_part(\'/partials/search-custom-post-type\');

    } else{
        get_template_part(\'/partials/search-normal\');
    }
}
else{
        get_template_part(\'/partials/search-normal\');
    }
?>
我读到我可以添加以下代码,它将允许我自定义搜索自定义帖子类型。php

$args = array( \'post_type\' => \'custom-post-type-name\' );
$args = array_merge( $args, $wp_query->query );
query_posts( $args );
然而,这没有任何作用。搜索仍然是一样的。

1 个回复
SO网友:WebElaine

对于主搜索页面,您可以使用pre_get_posts 有条件的:

if($query->is_main_query() && $query->is_search && !is_admin()) {
因此,只有当它是主查询,它是搜索查询,并且您不在管理中时,才可以调整查询。设置要索引的任何帖子类型in the main search query.

下一步,设置自定义搜索。根据您希望如何设置,一个选项是创建一个页面模板,首先检查查询字符串(即提交的搜索)。如果它发现$_GET[\'customsearch\'] 参数,通过使用自定义WP\\U查询仅从您的CPT中提取结果来显示搜索结果。如果没有,则显示搜索表单(带有customsearch 作为输入的名称)。

另一种选择是创建一个小部件,您可以将其粘贴到网站上的任何侧栏中,并将表单操作设置为带有自定义页面模板的页面,以便$_GET[\'customsearch\'] 为空模板执行wp_redirect 在输出标题/等之前(您可以重定向到主页或任何最相关的页面),但如果有参数,它会显示搜索结果(再次使用自定义WP\\U查询)。

结束

相关推荐

Search Results Customization

无论如何,我可以自定义我的搜索结果吗?我的意思是,举个例子,我有一个财务网页,如果有人在搜索“aapl”,我想显示所有包含“aapl”和“apple”的结果。我该怎么做?提前感谢