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和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
MySQL的FIND_IN_SET函数使用方法分享
Mar 27 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 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
mysql 性能的检查和优化方法
2009/06/21 PHP
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
深入了解js原型模式
2019/05/30 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
美国在线印刷公司:PsPrint
2017/10/12 全球购物
工商技校毕业生自荐信
2013/11/15 职场文书
大班幼儿评语大全
2014/04/30 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
雨花台导游词
2015/02/06 职场文书
母亲节寄语大全
2015/02/27 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
离婚案件上诉状
2015/05/23 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python