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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
php支持断点续传、分块下载的类
May 02 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
Django 中 cookie的使用
Aug 17 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
php微信公众号开发之图片回复
Oct 20 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
FCKeditor的安装(PHP)
2007/01/13 PHP
php开发工具之vs2005图解
2008/01/12 PHP
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
python中Flask框架简单入门实例
2015/03/21 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
Java面试题及答案
2012/09/08 面试题
文明演讲稿范文
2014/05/12 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
PHP中->和=>的意思
2021/03/31 PHP
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL