我无法显示从帖子类型自定义创建的搜索模板

时间:2017-08-09 作者:Carlos Stevanato

我创建了一个论坛插件,并希望有一个cystomized搜索结果模板,我在插件执行文件中添加了以下摘录:

add_filter(\'single_template\', \'pagina_topicos\');

function pagina_topicos($single) {
    global $wp_query, $post;

/* Informando o Modelo de Página das Aulas */
if ($post->post_type == "stopicos"){
    if(file_exists(plugin_dir_path( __FILE__ ) . \'/single-topico.php\'))
        return plugin_dir_path( __FILE__ ) . \'/single-topico.php\';
}

  if( $wp_query->is_search && $post_type == \'stopicos\' )
  {
    return plugin_dir_path( __FILE__ ) . \'/archive-stopicos.php\';
  }

    return $single;
}
我在搜索中使用以下表格:

 <form role="search" action="<?php echo site_url(\'/\'); ?>" method="get" id="searchform">
                    <input type="text" class="submit-search form-control input-lg" placeholder="Buscar" />
                    <input type="hidden" name="post_type" value="stopicos"/>
                    <span class="input-group-btn">
                        <button class="btn btn-info btn-lg" type="submit" value="Search">
                            <i class="glyphicon glyphicon-search"></i>
                        </button>
                       </form> 
有什么问题导致我定制的模型未加载?

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

您正在使用single_template 钩子,称为single 邮递从Codex:

“single\\u template”过滤器可用于加载给定帖子的自定义模板。无论何时调用“单个”模板,它都将替换使用的模板。

我的猜测是,这可能可以通过使用template_include 挂钩:

这个过滤器挂钩在WordPress包含预定模板文件之前立即执行。这可以用来覆盖WordPress的默认模板行为。

SO网友:Carlos Stevanato

Zedejose真的用template\\u include解决了问题,下面是我所做的,而且很有效

    add_filter(\'template_include\',\'my_custom_search_template\');

function my_custom_search_template($template){
    global $wp_query;
    if (!$wp_query->is_search)
        return $template;

    return dirname( __FILE__ ) . \'/search-stopicos.php\';

}

结束

相关推荐

Search one custom field?

在帖子中,有一个名为“color”的自定义字段。我有自定义搜索页面模板,我想只显示来自该自定义字段的搜索结果。如何限制搜索只在帖子内的一个自定义字段中查看?