WordPress中获取所使用的模板的页面ID的简单方法

 更新时间:2015年12月31日 15:32:05   作者:露兜  
这篇文章主要介绍了WordPress中获取所使用的模板的页面ID的简单方法,通过这个方法来获取页面的链接是比较方便的,需要的朋友可以参考下

什么是模板呢?默认情况 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吗?如果主题是给客户用了,你知道客户会用什么样的标题?强制客户用你指定的标题?那你太不人性化了吧!

相关文章

  • 使用Yii2实现主从数据库设置

    使用Yii2实现主从数据库设置

    大家应该都知道,当项目做大了,数据库主从还是不可少的。使用Yii框架开发,如何设置数据库的主从呢?其实很简单。下面这篇文章就给大家详细介绍了使用Yii2实现主从数据库设置的方法,文中介绍的很详细,相信对大家的理解和学习很有帮助,下面来一起学习学习吧。
    2016-11-11
  • ThinkPHP提示错误Fatal error: Allowed memory size的解决方法

    ThinkPHP提示错误Fatal error: Allowed memory size的解决方法

    这篇文章主要介绍了ThinkPHP提示错误Fatal error: Allowed memory size的解决方法,分析了该错误的原因与具体的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • PHP之多条件混合筛选功能的实现方法

    PHP之多条件混合筛选功能的实现方法

    今天小编就为大家分享一篇PHP之多条件混合筛选功能的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php解析非标准json、非规范json的方式实例

    php解析非标准json、非规范json的方式实例

    这篇文章主要给大家介绍了关于利用php解析非标准json、非规范json的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 跟我学Laravel之请求与输入

    跟我学Laravel之请求与输入

    本文主要讲解了Laravel框架中请求与输入的概念以及示例,非常的简单实用,需要的朋友可以参考下
    2014-10-10
  • thinkphp3.2同时连接两个数据库的简单方法

    thinkphp3.2同时连接两个数据库的简单方法

    这篇文章主要给大家介绍了关于thinkphp3.2同时连接两个数据库的简单方法,文中通过示例代码介绍的非常详细,对大家学习或者使用thinkphp3.2具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Laravel5.0+框架邮件发送功能实现方法图文与实例详解

    Laravel5.0+框架邮件发送功能实现方法图文与实例详解

    这篇文章主要介绍了Laravel5.0+框架邮件发送功能实现方法,结合图文与实例形式详细分析了Laravel5.0+框架邮件发送相关原理、配置、实现方法及操作注意事项,需要的朋友可以参考下
    2019-04-04
  • PHP实现财务审核通过后返现金额到客户的功能

    PHP实现财务审核通过后返现金额到客户的功能

    有这么一个返现的系统,当前端客户发起提现的时候,后端就要通过审核这笔返现订单,才可以返现到客户的账号里。这篇文章主要介绍了PHP实现财务审核通过后返现金额到客户 ,需要的朋友可以参考下
    2019-07-07
  • php实现memcache缓存示例讲解

    php实现memcache缓存示例讲解

    共享内存是一种在相同机器中的应用程序之间交换数据的有效方式,本文说的是php实现memcache缓存示例,大家参考使用吧
    2013-12-12
  • PHP版单点登陆实现方案的实例

    PHP版单点登陆实现方案的实例

    本篇文章主要介绍了PHP版单点登陆实现方案的实例,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11

最新评论