06关于列表详情页面模版的运行机制–新手小白,快速使用静态页面建立wordpress主题
wordpress 列表详情页模板运行机置
1.根据URL确定列表模板:
当访问列表页时,WordPress会根据URL的规则和结构来确定使用哪个模板来显示该列表页。通常情况下,WordPress会按照以下优先级寻找模板:
category-{slug}.php:用于特定分类目录的模板,其中{slug}是分类目录的别名(slug)。category-{ID}.php:用于特定分类目录的模板,其中{ID}是分类目录的ID。tag-{slug}.php:用于特定标签页的模板,其中{slug}是标签的别名(slug)。tag-{ID}.php:用于特定标签页的模板,其中{ID}是标签的ID。taxonomy-{taxonomy}-{term}.php:用于特定自定义分类法(taxonomy)和术语(term)的模板。author-{user_nicename}.php:用于特定作者的模板,其中{user_nicename}是作者的用户名。date.php:用于日期归档页的模板。archive.php:用于一般的归档页的模板。index.php:默认的列表页模板。
2.内容详情模版的调用方式
文章模版、自定义文章类型内容页模版调用优先级规则
single-{post-type}-{slug}.php.php
single-{post-type}.php
single-{slug}.php
single.php
singular.php
4.具体的调用方式
4.1单个模版的调用
$template_path = “template-parts/single-{$category_slug}.php”;//template-parts文件夹的名称,根据自己需求进行设定
4.2多个single.php调用方式—做为参考例子
TEXT
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
<?php
/**
* The main template file.
*
* This is the most generic template file in a WordPress theme
* and one of the two required files for a theme (the other being style.css).
* It is used to display a page when nothing more specific matches a query.
* E.g., it puts together the home page when no home.php file exists.
*
* @link https://codex.wordpress.org/Template_Hierarchy
*
* @package cknone
* @since 1.0.0
*/
//开启定义模版路径开始
// 获取文章所属的第一个分类别名
$categories = get_the_category();
$category_slug = !empty($categories) ? $categories[0]->slug : 'default';
$category_id = !empty($categories) ? $categories[0]->term_id : 0;
// 定义模板路径
$template_path = "template-parts/single-{$category_slug}.php";//template-parts文件夹的名称,根据自己需求进行设定
// echo $template_path;
// 加载模板(若存在)
if (locate_template($template_path)) {
// 如果当前分类有对应模板,直接使用
get_template_part('template-parts/single', $category_slug);
} else {
// 如果当前分类没有模板,检查父级分类
if ($category_id > 0) {
$parent_id = get_category($category_id)->parent;
if ($parent_id > 0) {
// 获取父级分类信息
$parent_category = get_term($parent_id, 'category');
if (!is_wp_error($parent_category) && $parent_category) {
$parent_slug = $parent_category->slug;
$parent_template_path = "template-parts/single-{$parent_slug}.php";
// 检查父级分类是否有模板
if (locate_template($parent_template_path)) {
// 使用父级分类的模板
get_template_part('template-parts/single', $parent_slug);
} else {
// 如果父级也没有模板,则使用通用模板
get_template_part('template-parts/single', 'blogs');
}
} else {
// 如果获取父级分类出错,则使用通用模板
get_template_part('template-parts/single', 'blogs');
}
} else {
// 如果没有父级分类,则使用通用模板
get_template_part('template-parts/single', 'blogs');
}
} else {
// 如果分类ID无效,则使用通用模板
get_template_part('template-parts/single', 'blogs');
}
}
?>下一篇: 07补充模版调用内容–新手小白,快速使用静态页面建立wordpress主题 »

