WordPress中获取所使用的模板的页面ID的简单方法


Posted in PHP onDecember 31, 2015

什么是模板呢?默认情况 WordPress是使用主题目录下page.php来作为模板显示页面的,但是有时候我们需要不同的模板来显示页面,比如登录、注册和投稿页面等,这些页面跟普通的页面是有所区别,这时候WordPress提供了页面模板让开发者可以自定义WordPress页面外观甚至功能。
页面模板php文件的匹配

WordPress中是通过自定义栏目来记录页面所使用的模板的,自定义栏目名称:_wp_page_template,值为模板的文件名:

如果是默认模板page.php,那么 _wp_page_template 的值为:default。如果从始至终都是默认模板,WordPress不会添加此自定义栏目
如果是主题根目录下的自定义页面模板,那么那么 _wp_page_template 的值为文件名,如:page-login.php
如果是主题子目录下的页面模板,那么 _wp_page_template 的值包含路径,如:templates/page-login.php
因为这个自定义栏目的名称是以下划线开头的,属于隐藏的自定义栏目,所以你在页面编辑页的自定义栏目中是看不到这个字段的。

通过页面模板获取页面ID

我新建了一个登录页面的模板,命名为login.php,并且后台已经有页面在使用这个模板了,那我就可以使用以下函数来获取使用login.php这个模板的页面id:

function get_page_id_from_template($template) {
  global $wpdb;

  // 多个页面使用同一个模板我就没辙了
  $page_id = $wpdb->get_var($wpdb->prepare("SELECT `post_id` 
               FROM `$wpdb->postmeta`, `$wpdb->posts`
               WHERE `post_id` = `ID`
                  AND `post_status` = 'publish'
                  AND `meta_key` = '_wp_page_template'
                  AND `meta_value` = %s
                  LIMIT 1;", $template));

  return $page_id;
}

很多人可能会问,获取页面id来干什么?通过id来获取登录页面的链接不行吗:

<a href="<?php 
echo get_permalink(get_page_id_from_template('login.php'))
?>>登录</a>

也有人会问,通过页面标题和别名不也可以获取到页面id吗?如果主题是给客户用了,你知道客户会用什么样的标题?强制客户用你指定的标题?那你太不人性化了吧!

PHP 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
Oct 09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
php构造函数实例讲解
Nov 13 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
浅谈php://filter的妙用
Mar 05 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 #PHP
详解Window7 下开发php扩展
Dec 31 #PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 #PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 #PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 #PHP
php实现微信公众号主动推送消息
Dec 31 #PHP
php创建桌面快捷方式实现方法
Dec 31 #PHP
You might like
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP文件操作详解
2016/12/30 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
详解Python中的Cookie模块使用
2015/07/06 Python
python 自动去除空行的实例
2018/07/24 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python的移位操作实现详解
2019/08/21 Python
python 默认参数相关知识详解
2019/09/18 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
python输出数学符号实例
2020/05/11 Python
python 将Excel转Word的示例
2021/03/02 Python
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
大学校园活动策划书
2014/02/04 职场文书
关于元旦的广播稿
2014/02/16 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
爱国演讲稿400字
2014/05/07 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
2015年话务员工作总结
2015/04/29 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
合作合同协议书
2016/03/21 职场文书
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android