首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果使用?cat=作为URL参数,Wordpress会选择错误的模板

问如果使用?cat=作为URL参数,Wordpress会选择错误的模板
EN

WordPress Development用户
提问于 2023-04-20 15:08:57
回答 2查看 29关注 0票数 0

我有一个有以下文章结构的网站。它工作并使用archive.php模板,就像它应该使用的那样

website.com/category/articles/arrester/?tag=online-lectures

这也适用于使用标签在线-lectures.php,就像它应该使用的那样

Website.com/tag/联机-讲座/

现在,这是行不通的--从某种意义上说,它显示所有带有“在线讲座”标签的文章,只显示id 7类别中带有此标记的文章,但是它使用的是archive.php模板,而不是像我想象的那样使用标签-online-lectures.php。

Website.com/tag/在线-讲座/?cat=7

为什么?

EN

回答 2

WordPress Development用户

回答已采纳

发布于 2023-04-20 17:01:09

为什么?

这是因为漂亮的permalink:

代码语言:javascript
复制
/tag/online-lectures/?cat=7

获取转换为丑陋的permalink:

代码语言:javascript
复制
index.php?tag=online-lectures&cat=7

正如您所看到的,/tag/online-lectures部分不再像以前那样强调了。毕竟,/category/arrester?tag=online-lectures会归结为完全相同的丑陋URL。

由于结果查询是一个归档文件,而且可用的最具体的模板是archive.php,所以它选择了该模板。

记住,决定加载哪个模板的不是URL,而是主查询。URL从/ index.php?ugly=style /style/permalinks转换为,然后使用该URL创建查询参数,这些参数被放入主查询中,用于获取帖子。之后,WP使用主查询对象在模板层次结构中运行并选择要加载的模板。

更改模板

您的假设可能是错误的,但这并不意味着您不能使用您期望的模板。这意味着您需要一个过滤器来识别这种情况,并使用template_include加载一个不同的模板。

例如,如果我们将natalia.php放在?natalia=1中,那么我们将从主题请求D12:

代码语言:javascript
复制
add_filter( 'template_include', 'natalia_template' );

function natalia_template( $template ) {
    if ( isset( $_GET['natalia` ) ) {
        return 'natalia.php';
    }
    return $template;
}

您可以使用类似的筛选器检查查询变量,并选择您喜欢的模板。

票数 1
EN

WordPress Development用户

发布于 2023-04-20 16:14:54

如果希望对特定类别中的所有标记存档使用tag-online-lectures.php模板,而不管类别ID如何,则可以修改tag.php模板以检查当前标记存档是否在所需类别中,如果是,则包括tag-online-lectures.php模板。

下面是一个如何修改tag.php模板以实现此目的的示例:

代码语言:javascript
复制
term_id, 'category', array( 'fields' => 'ids' ) );

// Check if the tag is assigned to a category with the desired slug
if ( in_array( 'articles', $categories ) ) {

    // Include the tag-online-lectures.php template
    get_template_part( 'tag-online-lectures' );

} else {

    // Include the default tag.php template
    get_template_part( 'archive', 'tag' );

}
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/415493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档