找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1714|回复: 0
打印 上一主题 下一主题

深入解析WordPress中加载模板的get_template_part函数

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 05:39:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            最近研究官方主题 Twenty Eleven ,有一些东西网上现成的中文资料不好找,在博客里记载下来,算是分享,也算是备忘,wordpress 3.0 以后就开始便有了get_template_part() 这个函数 ,应该是为文章呈现形式提供更为多样化的选择而给出的新功能。
Twenty Eleven 中 实例如下:
Twenty Eleven index.php 文件
行:21





............................
描述:
加载一个制定的模板到另一个模板里面(不同于包含header,sidebar,footer).
使得一个主题使用子模板来实现代码段重用变得简单
用于在模板中包含指定的模板文件,只需用指定参数slug和name就可以包含文件{slug}-{name}.php,最重要的功能是如果没有这个文件就包含没有{name}的.php文件文件
使用方法:
参数:

  
  • $slug (必须) 通用的模板名
      
  • $name (可选) 指定的模板名

    示例:
    使用 loop.php 在子主题里面
    假设主题文件夹wp-content/themes下父主题是twentyten子主题twentytenchild,那么下面的代码:
    php 的require()函数将按下面优先级包含文件
    1. wp-content/themes/twentytenchild/loop-index.php
    2. wp-content/themes/twentytenchild/loop.php
    3. wp-content/themes/twentyten/loop-index.php
    4. wp-content/themes/twentyten/loop.php
    导航(这个例子很烂,但却是另一种使用思路)
    使用通用的nav.php文件给主题添加导航条:
    get_template_part() 的钩子详解
    因为在官方主题(Twenty Eleven)中 get_template_part() 函数被大量使用,所以就目前来看,该函数应该算是比较热门的一个函数了,之前有写过一篇文章讲述该函数的具体使用方法,在这里也就不便再赘述,本文主要针对该函数的 add_action 中的 hook $tag 值进行探讨,因为,WP hook 中林林总总有那么些函数在$tag 值中比较让人费解。
    与普通hook的区别
    普通的hook的$tag 是一个固定值,而 get_template_part() 确是一个可变值,好吧先不说,wp这么做给我们实现一个简单功能带来多少麻烦,但如此设置确实给多样化的主题实现带来了不少方便之处。
    实现这一原理的源代码如下,截取自 WordPress 源程序。
    function get_template_part( $slug, $name = null ) {
    //$tag = "get_template_part_{$slug}"
    //也就是,get_template_part_+你当时设置的$slug值
    do_action( "get_template_part_{$slug}", $slug, $name );
    $templates = array();
    if ( isset($name) )
      $templates[] = "{$slug}-{$name}.php";
      $templates[] = "{$slug}.php";
      locate_template($templates, true, false);
    }
    实例
    像上面那样说,可能也许基本上有点看不明白,好吧给点实例

    //复习一下get_template_part($slug, $name)的用法,
    //如果你在主题里这样
    get_template_part( 'index' , 'photo');
    //那么 WP 会去找主题根目录下 index-photo.php 文件

    //那么我们想挂一个函数的话就得像如下
    function addFunction ($slug, $name){
    echo $slug;
    }
    add_action("get_template_part_index","addFunction",10,2);
    get_template_part() 函数详解备忘
                
                
    您可能感兴趣的文章:
  • 讲解WordPress中用于获取评论模板和搜索表单的PHP函数
  • WordPress的主题编写中获取头部模板和底部模板
  • WordPress主题制作之模板文件的引入方法
  • WordPress中获取所使用的模板的页面ID的简单方法
  • 详解WordPress中调用评论模板和循环输出评论的PHP函数
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端