需要搭建一批的page页面,需要使用到默认的父页面以及子页面,和部分指定name的页面模板,经过一番折腾,以下这份代码,最终实现了需求:
<?php
/**
* Template Name: 地区分站-省市分区配置
*/
$name = get_query_var('name'); // 获取$name变量
if ($name && locate_template("pages/fenzhan/shengshi-$name.php")) {
// 如果$name存在,并且对应的模板文件存在,加载$name模板
get_template_part("pages/fenzhan/shengshi-$name");
} else {
$parent_page = wp_get_post_parent_id(get_the_ID()); // 获取当前页面的父页面
// 检查当前页面是否有父页面
if ($parent_page && locate_template("pages/fenzhan/shengshi-child.php")) {
// 当前页面是子页面,并且子页面模板存在,加载子页面模板
get_template_part('pages/fenzhan/shengshi-child');
} else {
// 当前页面是父页面或者没有父页面,加载父页面模板
get_template_part('pages/fenzhan/shengshi');
}
}
?>
而实现逻辑来自以下这两份设计方式:
<?php
/**
* Template Name: 地区分站-省市分区配置
*/
// 获取当前页面的父页面
$parent_page = wp_get_post_parent_id(get_the_ID());
// 检查当前页面是否有父页面
if ($parent_page) {
// 当前页面是子页面,加载子页面模板
get_template_part('pages/fenzhan/shengshi-child');
} else {
// 当前页面是父页面或者没有父页面,加载父页面模板
get_template_part('pages/fenzhan/shengshi');
}
?>
以及这份基础page模板选择函数:
<?php
/**
* Template name: 地区分站-省市分区配置
*/
?>
<?php get_template_part('pages/fenzhan/shengshi', $name) ?>
如此,我们根据这两份,结合以后,出现了文章开头的设计。
终极版中,在加载子页面模板时使用了 locate_template 函数来明确检查是否存在对应的模板文件。如果模板文件存在,它才会加载该模板文件,否则它会继续加载父页面模板。这种方式更加精确,确保了正确加载子页面模板。
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:wordpress中选择page模板时自动区分父页面和子页面以及自定义name页面模板
文章链接:https://www.qqhgg.com/182.html
该作品系作者结合个人学习经验及互联网相关知识整合。如若侵权请通过投诉通道提交信息,我们将按照规定及时处理。