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 11 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
详解php中 === 的使用
Oct 24 PHP
PHP中quotemeta()函数的用法讲解
Apr 04 PHP
PHP解决高并发的优化方案实例
Dec 10 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&amp;&amp;mysql)一
2006/10/09 PHP
PHP的FTP学习(一)
2006/10/09 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php的ddos攻击解决方法
2015/01/08 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
2017/02/04 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python爬取微信公众号文章的方法
2019/02/26 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
python3 配置logging日志类的操作
2020/04/08 Python
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
房地产开发计划书
2014/01/10 职场文书
迟到检讨书400字
2014/01/13 职场文书
护士辞职信范文
2014/01/19 职场文书
《尊严》教学反思
2014/02/11 职场文书
有关环保的标语
2014/06/13 职场文书
解放思想演讲稿
2014/09/11 职场文书
结婚老公保证书
2015/02/26 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python