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 相关文章推荐
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
php开发环境配置记录
Jan 14 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
深入php self与$this的详解
2013/06/08 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
javascript实现按回车键切换焦点
2015/02/09 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
最新奶茶店创业计划书
2014/01/25 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
客房服务员岗位职责
2015/02/09 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
学校食堂管理制度
2015/08/04 职场文书
2019公司管理制度
2019/04/19 职场文书
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
2022年显卡天梯图(6月更新)
2022/06/17 数码科技