深化解析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中加载模板的get_template_part函数》的一些看法。更多内容请查看本栏目更多内容!

本文相关话题: WordPress 模板 函数 PHP PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
多备份:一键主动备份你的WordPress博客

WordPress 现有的备份办法和存在的成绩 关于 WordPress 博客来说,有很多备份的办法,数据库能够间接经过 P...

Wordpress 遗记明码的解决办法

1. Wordpress的明码在存入数据库是以md5码的方式寄存 依据此原理能够手动update数据库,从新设置自定的明码 ...

wordpress后盾增加子菜单的罕用几种状况及对应办法

1、在仪表盘增加子菜单: add_submenu_page( 'index.php', &hellip; ); 2、在文章处增加子菜单: add_submenu...

wordpress 上传附件中文文件名乱码处理方法(for Windows)

然而将站点部署到一个Windows XP 中文版上时,发现上传的附件在效劳器的文件名为乱码,而URL是失常的,阐明...

Wordpress将选中内容分享到新浪腾讯微博的办法

本文实例讲述了Wordpress将选中内容分享到新浪腾讯微博的办法。分享给大家供大家参考。详细办法如下: 1、引...

如何设置WordPress图片防盗链办法 推荐

假如您的博客有很多很多图片,空间又有流量限度,那么避免他人盗取本人的图片链接应该说是势在必行了,由于...

需求提交

客服服务