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实现分页的一个示例
Oct 09 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
PHP 文件缓存的性能测试
Apr 25 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
php实现mysql封装类示例
May 07 PHP
php建立Ftp连接的方法
Mar 07 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
asp函数split()对应php函数explode()
Feb 27 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的memory_limit限制的方法分享
2012/02/21 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
laravel 数据验证规则详解
2019/10/23 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
js图片预加载示例
2014/04/30 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
python实现的发邮件功能示例
2019/09/11 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
致200米运动员广播稿
2014/02/06 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
运动会横幅标语
2014/06/17 职场文书
班级标语大全
2014/06/21 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
浅谈Python中的正则表达式
2021/06/28 Python
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
DIY胆机必读:各国电子管评价
2022/04/06 无线电