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 相关文章推荐
模仿OSO的论坛(一)
Oct 09 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php判断linux下程序问题实例
Jul 09 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
php外部执行命令函数用法小结
Oct 11 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
form表单action提交的js部分与html部分
2014/01/07 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jQuery功能函数详解
2015/02/01 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python科学计算包numpy用法实例详解
2018/02/08 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
python实现IOU计算案例
2020/04/12 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
大学生自我鉴定评语
2014/01/27 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
政府法律服务方案
2014/06/14 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
煤矿安全协议书
2014/08/20 职场文书
财务会计实训报告
2014/11/05 职场文书
学生个人评语大全
2015/01/04 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
Go获取两个时区的时间差
2022/04/20 Golang