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 相关文章推荐
基于文本的留言簿
Oct 09 PHP
php扩展ZF――Validate扩展
Jan 10 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
轻松实现php文件上传功能
Feb 17 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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的array_multisort()使用方法介绍
2012/05/16 PHP
php开发文档 会员收费1期
2012/08/14 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
讲解vue-router之什么是动态路由
2018/05/28 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Python编程实现的简单神经网络算法示例
2018/01/26 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
PyTorch-GPU加速实例
2020/06/23 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Python编写万花尺图案实例
2021/01/03 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
英语教师个人工作总结
2015/02/09 职场文书
幼儿园个人总结
2015/02/28 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python