我已经使用以下代码在一个插件中创建了archive-programs.php:
$this->
loader->
add_filter('template_include', $plugin_public, 'programs_template');
public function programs_template($template) {
if (is_post_type_archive('programs')) {
$theme_files = array('archive-programs.php', 'Anthem/archive-programs.php');
$exists_in_theme = locate_template($theme_files, false);
if ($exists_in_theme != '') {
return $exists_in_theme;
} else {
return plugin_dir_path(__FILE__) . 'archive-programs.php';
}
}
return $template;
}
这可以按预期方式工作(上面的代码), 而且我能够将程序存档布局到所需的内容中。现在的问题是我正在尝试使用以下代码为存档类别创建页面, 但该页面无法正常工作。
$this->
loader->
add_filter('category_template', $plugin_public, 'programs_category_template');
public function programs_category_template($template) {
if (is_post_type_archive('programs') &
&
is_tax()) {
$theme_files = array('archive-programs-category.php', 'Anthem/archive-programs-category.php');
$exists_in_theme = locate_template($theme_files, false);
if ($exists_in_theme != '') {
return $exists_in_theme;
} else {
return plugin_dir_path(__FILE__) . 'archive-programs-category.php';
}
}
return $template;
}
【如何(WordPress中自定义帖子类型的自定义类别存档页面)】有谁知道我如何为” 存档类别” 创建模板。我不想为每个类别手动创建模板文件。上面的代码仅加载默认的Archive Category ptemplate
#1尝试将过滤器从category_template更改为template_include
#2类别模板挂钩只能用于默认的Wordpress类别, 不能用于分类法。如果尝试使用以下简单代码, 你将看到自定义分类法或帖子类型档案将不使用text.php文件, 但是默认的WP类别将使用。
add_filter('category_template', 'testtemplates');
function testtemplates($template) {
$template = plugin_dir_path( __FILE__ ) . 'text.php';
return $template;
}
首先, 你需要使用template_include过滤器。
你不能再使用is_post_type_archive, 因为你不再在帖子类型档案中, 而是在分类档案中。因此is_post_type_archive()返回false。 Is_tax()可以, 并且将返回true。
检查当前分类法的一个好方法是使用get_queried_object。它有其自身的警告, 但在此有很好的用途。
add_filter('template_include', 'programs_category_template');
function programs_category_template($template) {
$term = get_queried_object();
$taxonomy = $term->
taxonomy;
$theme_files = array('archive-programs-category.php', 'Anthem/archive-programs-category.php');
$exists_in_theme = locate_template($theme_files, false);
$template = plugin_dir_path(__FILE__) . 'archive-programs-category.php';
if ($taxonomy === 'programs' &
&
is_tax()) {
$template = $exists_in_theme;
}return $template;
}
当使用分类法术语时(分类通常指Posts帖子类型的默认WP类别), 你的分类法模板名称应以taxonomy-关键字而不是archive-开头。 archive关键字仅保留给CPT归档, 不应用于分类术语归档。因此, 在这种情况下, 如果你的分类术语命名为program-category, 则它将是taxonomy-program-category.php。
推荐阅读
- 如何在单击ajax wordpress上创建子类别()
- 如何为自定义帖子创建单个模板
- 如何在Genesis子主题中创建自定义帖子模板
- 如何创建自定义页面和URL运行时间()
- 如何将WordPress主题转换为AMP Ready主题()
- 如何控制Visual Composer插件全宽部分的宽度
- 如何在一个WordPress主题中连接多个HTML页面()
- 当我们将网站链接发送给任何人时,如何在WordPress中更改网站图像
- 如何在Hestia Pro WordPress主题中更改商店背景颜色()