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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
php简单随机字符串生成方法示例
Apr 19 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中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
js实现打字小游戏
2019/12/17 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
python flask 多对多表查询功能
2017/06/25 Python
Python创建或生成列表的操作方法
2019/06/19 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Django通过json格式收集主机信息
2020/05/29 Python
Python实现自动装机功能案例分析
2020/10/22 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
中科软测试工程师面试题
2012/06/16 面试题
高中生活自我鉴定
2014/01/18 职场文书
双语教学实施方案
2014/03/23 职场文书
土地租赁意向书
2014/07/30 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书