什么时候tag-{slug}.php
是主题的根源,比如说wp-content/themes/p2/tag-{slug}.php
, 遵守模板层次结构。
然而,我有许多这样的自定义文件,只是无法将其放在主题根目录中。当我测试时p2/tag
和p2/custom-tag
目录,它不起作用。
有什么见解吗?
什么时候tag-{slug}.php
是主题的根源,比如说wp-content/themes/p2/tag-{slug}.php
, 遵守模板层次结构。
然而,我有许多这样的自定义文件,只是无法将其放在主题根目录中。当我测试时p2/tag
和p2/custom-tag
目录,它不起作用。
有什么见解吗?
当您查看源代码时,标记模板将按照以下方式加载到模板层次结构中
elseif ( is_tag() && $template = get_tag_template() ) :
在里面wp-includes/template-loader.php
get_tag_template()
使用get_query_template()
其中使用locate_template()
根据主题根文件夹的层次结构加载标记模板
因此,将模板移动到子文件夹将不会立即生效。get_query_template()
但是要有一个过滤器(apply_filters( "{$type}_template", $template )
)可以用来更改此行为并加载tag-{$tag->slug}.php
从子文件夹
因此,我们应该做以下工作
检查我们的tag-{$tag->slug}.php
存在于我们选择的子文件夹中
加载我们的tag-{$tag->slug}.php
来自子文件夹(如果存在)
如果出现以下情况,请从层次结构中加载默认模板tag-{$tag->slug}.php
子文件夹中不存在
add_filter( \'tag_template\', function ( $template )
{
$tag = get_queried_object();
// Alternative path to desired template
$alternative_template = locate_template( "custom-sub-folder/tag-{$tag->slug}.php" ); // Change subfolder name
// If we do have "tag-{$tag->slug}.php" in a subfolder, load "subfolder/tag-{$tag->slug}.php"
if ( $alternative_template )
return $template = $alternative_template;
// If we don\'t have a "tag-{$tag->slug}.php", load templates according to hierarchy
return $template;
});
抱歉,我的PHP技能不足。我想在WP中使用php include,但我想使用<?php get_template_directory(); ?>我不知道那会是什么样子。我的非WP文件如下所示:<?php include \'inc/social.php\'; ?> 基本上我不知道如何将两个PHP命令串在一起get_template_directory + 包括