不带术语的查询使用index.php模板而不是Archive.php

时间:2013-04-26 作者:Grahamd

我正在使用Query Multiple Taxonomies插件获取一页搜索结果(所有这些都是自定义的帖子类型-car)。如果添加了任何搜索词,则url如下所示:

http://mysite.com/car/?makemodel=ford&body=&gearbox=&fuel=&minprice=&maxprice=
然后是存档。使用php模板。但是,如果用户单击“搜索”而不添加任何术语,则url如下所示:

http://mysite.com/car/?makemodel=&body=&gearbox=&fuel=&minprice=&maxprice=
然后索引。而是使用php。我希望确保此“空”搜索使用存档。php模板。

我的函数文件中的这些位可能相关:

// Ensure Custom Post Type is included in query

add_action( \'pre_get_posts\', \'add_my_post_types_to_query\' );

function add_my_post_types_to_query( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( \'post_type\', array(\'car\' ) );
    return $query;
}


// Tweaks to taxonomy layered search

function my_qmt_base_url( $base ) {
    return get_bloginfo(\'home\').\'/car/\';
}
add_filter( \'qmt_base_url\', \'my_qmt_base_url\' );


function my_qmt_reset_url( $reset_url ) {
    $url = get_permalink();
    return $url;

}
add_filter( \'qmt_reset_url\', \'my_qmt_reset_url\' );
任何帮助都将不胜感激!

格雷厄姆

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

您可以筛选template_include:

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

function wpse_97347_force_archive( $template )
{
    if ( isset ( $_GET[\'makemodel\'] ) && empty ( $_GET[\'makemodel\'] ) )
        return get_archive_template();

    return $template;
}
未测试。

结束

相关推荐

Multiple Page Templates & CSS

在使用多个页面模板的主题上处理CSS的最佳实践是什么?例如:我将有一个全宽页面模板和一个两列页面模板。最好只在单个CSS中调用容器(#fullWidthContainer vs.#twoColumnContainer)还是为每个页面模板提供单独的CSS文件更好?