深入解析WordPress中加载模板的get_template_part函数
最近研究官方主题 Twenty Eleven ,有一些东西网上现成的中文资料不好找,在博客里记载下来,算是分享,也算是备忘,wordpress 3.0 以后就开始便有了get_template_part() 这个函数 ,应该是为文章呈现形式提供更为多样化的选择而给出的新功能。
Twenty Eleven 中 实例如下:
Twenty Eleven index.php 文件
行:21
<?php if ( have_posts() ) : ?> <?php twentyeleven_content_nav( 'nav-above' ); ?> <?php /* Start the Loop 在循环中使用以调用不同类型的文章 */ ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php endwhile; ?> ............................ <?php endif; ?>
描述:
加载一个制定的模板到另一个模板里面(不同于包含header,sidebar,footer).
使得一个主题使用子模板来实现代码段重用变得简单
用于在模板中包含指定的模板文件,只需用指定参数slug和name就可以包含文件{slug}-{name}.php,最重要的功能是如果没有这个文件就包含没有{name}的.php文件文件
使用方法:
<?php get_template_part( $slug, $name ) ?>
参数:
- $slug (必须) 通用的模板名
- $name (可选) 指定的模板名
示例:
使用 loop.php 在子主题里面
假设主题文件夹wp-content/themes下父主题是twentyten子主题twentytenchild,那么下面的代码:
<?php get_template_part( 'loop', 'index' ); ?>
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文件给主题添加导航条:
<?php get_template_part( 'nav' ); // Navigation bar (nav.php) ?> <?php get_template_part( 'nav', '2' ); // Navigation bar #2 (nav-2.php) ?> <?php get_template_part( 'nav', 'single' ); // Navigation bar to use in single pages (nav-single.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文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
深入解析WordPress中加载模板的get_template_part函数
这篇文章主要介绍了WordPress中加载模板的get_template_part函数,其中重点讲解了其函数钩子的使用,需要的朋友可以参考下...2016-01-14- 这篇文章主要为大家详细介绍了Ionic默认的Tabs模板使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-09-01
- WordPress插件的加载顺序其实对于很多朋友来讲都没有必要如何来操作了,但有时安装插件太多了我们需要设置一顺序了那么要如何来安装呢,下面来看看. 默认的情况下,Word...2016-11-25
- 这篇文章主要介绍了WordPress中用于获取文章作者与分类信息的方法整理,都是来自于WordPress的WP_Query类之下,需要的朋友可以参考下...2015-12-21
- 这篇文章主要介绍了WordPress中获取所使用的模板的页面ID的简单方法,通过这个方法来获取页面的链接是比较方便的,需要的朋友可以参考下...2016-01-04
- 这篇文章主要介绍了在WordPress的后台中添加顶级菜单和子菜单的函数详解,需要的朋友可以参考下...2016-01-14
- 这篇文章主要介绍了WordPress中用于检索模版的相关PHP函数使用解析,包括索模板的函数的使用,要的朋友可以参考下...2015-12-17
- 这篇文章主要介绍了编写PHP脚本来实现WordPress中评论分页的功能的方法,包括上一页下一页和导航式分页功能的添加,需要的朋友可以参考下...2015-12-14
- 这篇文章主要介绍了WordPress后台中实现图片上传功能的实例讲解,包括多个图片上传表单功能的实现,需要的朋友可以参考下...2016-01-14
- 这篇文章主要介绍了WordPress中用于创建以及获取侧边栏的PHP函数讲解,分别为register_sidebar()函数和get_sidebar()的使用,需要的朋友可以参考下...2016-01-02
WordPress中获取页面链接和标题的相关PHP函数用法解析
这篇文章主要介绍了WordPress中获取页面链接和标题的相关PHP函数用法解析,分别为get_permalink()和wp_title()函数的使用,需要的朋友可以参考下...2015-12-21- 这篇文章主要介绍了WordPress中邮件的一些修改和自定义技巧,包括更改邮件为HTML形式以及定义SMTP邮件的发件人的方法,需要的朋友可以参考下...2015-12-17
- 这篇文章主要介绍了在WordPress中实现发送http请求的相关函数解析,包括使用WP_Http类中的函数来发送post或get请求的方法,需要的朋友可以参考下...2016-01-02
解析WordPress中的post_class与get_post_class函数
这篇文章主要介绍了WordPress中的post_class与get_post_class函数,包括post_class()的PHP源码的相应介绍,需要的朋友可以参考下...2016-01-07解析WordPress中控制用户登陆和判断用户登陆的PHP函数
这篇文章主要介绍了WordPress中控制用户登陆和判断用户登陆的PHP函数,WordPress现在多用户功能已推出了一段时间,针对多用户需求的开发也日益增多,需要的朋友可以参考下...2016-03-07- 这篇文章主要介绍了WordPress中编写自定义字段的相关PHP函数解析,包括对不可见的自定义字段的相关介绍,需要的朋友可以参考下...2015-12-27
详解WordPress中分类函数wp_list_categories的使用
这篇文章主要介绍了详解WordPress中分类函数wp_list_categories的使用,文中罗列其主要参数的功能和写法,需要的朋友可以参考下...2016-01-07配置解决Nginx服务器中WordPress路径不自动加斜杠问题
这篇文章主要介绍了配置解决Nginx服务器中WordPress路径不自动加斜杠问题,nginx不会自动在请求的最后加上一个斜线的问题文中也有提到通用的规则改写方法,需要的朋友可以参考下...2016-01-27- 这篇文章主要介绍了在WordPress中获取数据库字段内容和添加主题设置菜单的方法,分别讲解了get_option()函数和add_theme_page()函数的用法,需要的朋友可以参考下...2016-01-14