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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP培训要多少钱
Jun 06 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
PHP封装的分页类与简单用法示例
Feb 25 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文件上传的例子及参数详解
2013/12/12 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
PHPMailer发送邮件
2016/12/28 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
Python Queue模块详解
2014/11/30 Python
python搜索包的路径的实现方法
2019/07/19 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
2014社区三八妇女节活动方案
2014/03/30 职场文书
股东出资证明书范例
2014/10/04 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
思想作风建设心得体会
2014/10/22 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
诚信考试主题班会
2015/08/17 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL