get_template_part() 函数详解备忘

评论(17)

最近研究官方主题 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) ?>

如果你不明白可以参考官方 API : get_template_part
本文翻译部分源引:http://www.cnblogs.com/heui/…..html
实例代码引用官方主题 Twenty Eleven index.php 文件





  1. 学着捣腾主题~

  2. 谢谢版主找了好久

  3. 这个受教了,感谢。

  4. Pingback: get_template_part()函数使用与解析 | TENNFY WU

  5. 不明觉厉,好像懂了点,谢谢!继续实践~

  6. Pingback: 在每篇文章的头部加了浏览次数 | bolun

  7. Pingback: comments_template|函数-WordPress

  8. 了解了,还是有用。

  9. Pingback: wordpress 修改首頁的文章顯示方式 | pupuliao的部落格

  10. @wa_aorz
    笔误,没有看到这就改过来,以免误人。

  11. “用于在模板中包含指定的模板文件,只需用指定参数slug和name就可以包含文件{slug}-{name}.php,最重要的功能是如果没有这个文件就包含没有{slug}的.php文件文件”这里好像写错了,应该是“没有这个文件就包含没有{name}的.php文件”吧?

  12. @XiangZi
    实际上,通过对$slug变量的设置,
    可以把文章内容显示部分的代码放到子目录,
    如果不嫌麻烦的话可以把主题做成MVC结构的。

  13. Pingback: 翔子的博客

  14. @本小明
    这是最棘手的问题,希望wp能把这个参数改良一下,把文章样式放到子目录。

  15. 不大习惯用get_template_part,搞的主题文件好像很多似的

  16. 什么东西都怕研究,一研究就不得了了。

  17. 我还是用点现成的主题了,也不会程序