加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 03:05:25 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:深入解析WordPress中加载模板的get_template_part函数》要点: 本文介绍了PHP实战:深入解析WordPress中加载模板的get_template_part函数,希望对您有用。如果有疑问,可以联系我们。 PHP实战 最近研究官方主题 Twenty Eleven,有一些东西网上现成

《PHP实战:深入解析WordPress中加载模板的get_template_part函数》要点:
本文介绍了PHP实战:深入解析WordPress中加载模板的get_template_part函数,希望对您有用。如果有疑问,可以联系我们。

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

PHP实战Twenty Eleven 中 实例如下:

PHP实战Twenty Eleven index.php 文件
?行:21

PHP实战
<?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; ?>

PHP实战描述:
加载一个制定的模板到另一个模板里面(不同于包括header,sidebar,footer).
使得一个主题使用子模板来实现代码段重用变得简单

PHP实战用于在模板中包括指定的模板文件,只需用指定参数slug和name就可以包括文件{slug}-{name}.php,最重要的功能是如果没有这个文件就包括没有{name}的.php文件文件

PHP实战使用办法:

PHP实战
<?php get_template_part( $slug,$name ) ?>

PHP实战参数:

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

PHP实战示例:

PHP实战使用 loop.php 在子主题里面

PHP实战假设主题文件夹wp-content/themes下父主题是twentyten子主题twentytenchild,那么下面的代码:

PHP实战
<?php get_template_part( 'loop','index' ); ?>

PHP实战php 的require()函数将按下面优先级包括文件

PHP实战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

PHP实战导航(这个例子很烂,但倒是另一种使用思路)
使用通用的nav.php文件给主题添加导航条:

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) ?>

PHP实战get_template_part() 的钩子详解
因为在官方主题(Twenty Eleven)中 get_template_part() 函数被大量使用,所以就目前来看,该函数应该算是比较热门的一个函数了,之前有写过一篇文章讲述该函数的具体使用办法,在这里也就不便再赘述,本文主要针对该函数的 add_action 中的 hook $tag 值进行探讨,因为,WP hook 中林林总总有那么些函数在$tag 值中比较让人费解.

PHP实战与普通hook的区别
普通的hook的$tag 是一个固定值,而 get_template_part() 确是一个可变值,好吧先不说,wp这么做给我们实现一个简单功能带来多少麻烦,但如此设置确实给多样化的主题实现带来了不少便利之处.
实现这一原理的源代码如下,截取自 WordPress 源程序.

PHP实战
 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);
}

PHP实战实例
像上面那样说,可能也许基本上有点看不明白,好吧给点实例

PHP实战?

PHP实战
//温习一下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);

PHP实战get_template_part() 函数详解备忘

《PHP实战:深入解析WordPress中加载模板的get_template_part函数》是否对您有启发,欢迎查看更多与《PHP实战:深入解析WordPress中加载模板的get_template_part函数》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读