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 相关文章推荐
Cannot modify header information错误解决方法
Oct 08 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
php递归创建目录的方法
Feb 02 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
Laravel模糊查询区分大小写的实例
Sep 29 PHP
php 函数中静态变量使用的问题实例分析
Mar 05 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 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新手上路(五)
2006/10/09 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP引用符&amp;的用法详细解析
2013/08/22 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
详解AngularJS中的作用域
2015/06/17 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
layui radio性别单选框赋值方法
2018/08/15 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
wxPython实现列表增删改查功能
2019/11/19 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
认识深刻的检讨书
2014/02/16 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
现役军人家属慰问信
2015/03/24 职场文书
mysql 索引合并的使用
2021/08/30 MySQL