陈德馨

WordPress主题教程:WordPress模板的内在联系

755人参与 |分类: 站长百科|时间:2014年09月20日 14:25

在学习了 WordPress 的主题构成、代码规范、主循环和模板层次等基础理论之后,我们已经可以动手制作主题了,但为了制作模板时对模板文件的命名和使用不存在疑问我建议还是先了解一下 WordPress 模板的内在关系。

通过“WordPress主题构成”中的模板文件说明,我们已经知道 WordPress 模板文件的常规命名,基于这些基础,下面我们来深入了解 WordPress 模板的内在关系。

functions.php

主题目录下的 functions.php 文件除了可以用来添加功能代码——如添加主题支持、注册菜单/侧边栏、添加自定义函数和主题设置页面等,也可以通过WordPress的动作和钩子对主题模板进行处理。如通过 tempalte_redirect 动作在模板输出前添加处理代码,下面是一个例子:

下例中通过 tempalte_redirect 动作在模板输出前添加一段代码,这段代码(通过 is_author() 函数判断)把作者归档页的请求重定向到网站首页并退出代码执行——退出是为了阻止作者归档页的模板内容输出到页面。

function dmeng_redirect_author(){
if ( is_author() ) {
wp_redirect( home_url() ); exit;
}
}
add_action('template_redirect', 'dmeng_redirect_author' );

通用模板

如你所见一般,网站在同类型的内容里使用的模板是一样的,而在同类型的模板中也存在同样的区域,比如说网站的头部、底部以及侧边栏等。下列是WordPress模板中的通用模块模板文件名称:

头部模板 —— header.php —— 通过 get_header() 函数调用

底部模板 —— footer.php —— 通过 get_footer() 函数调用

搜索框模板 —— searchform.php —— 通过 get_search_form() 函数调用

侧边栏模板 —— sidebar.php —— 通过 get_sidebar() 函数调用

评论框及评论列表模板 —— comments.php —— 通过 comments_template() 函数调用

WordPress自3.0版本起,已不建议使用没有通用模块模板(搜索框模板除外)的主题。没有替代方案。如果你只有一个 index.php 模板——也就是用不着这些通用模块模板的调用函数,那倒也无所谓。

内容模板

在不同类型的页面中主要的区别就是内容不同,一般头部底部侧边栏这些都是大同小异的,而在WordPress的主要内容区域里,我们需要了解则是WordPress的主循环,通过主循环我们可以在分类页输出文章列表,也可以在文章页输出详细的文章内容,等等。如:

<?php
//~ 载入头部模板
get_header();
//~ 循环开始
if (have_posts()) :
while (have_posts()) : the_post();
?>
<h3><a href="<?php the_permalink();?>" title="<?php the_title_attribute();?>"><?php the_title();?></a></h3>
<div><?php the_excerpt();?></div>
<?php
endwhile;
endif;
//~ 载入侧边栏模板
get_sidebar();
//~ 载入底部模板
get_footer();
?>

具体内容前面已经有一篇文章详细说明了,如果你还不了解请阅读“WordPress的主循环”。

注意事项

现在我们已经基本理清 WordPress 模板的内在关系了,但在制作模板之前我们还应该了解几点:

在模板内需要判断当前是哪个页面时使用条件函数,如判断是否首页则是 is_home() 函数。

模板之间只有微小差距时使用条件函数判断然后输出不同的内容。模板层次属于先后顺序的无须同时新建两个模板文件,比如说 tag.php 和 archive.php 一样就不需要新建 tag.php 模板文件了,因为两者在模板层次中属于先后顺序——没有找到前者时会自动加载后者;如果是页面和文章这样同层次的模板或者自定义的模板,那么互相调用则要新建模板文件,新建后在文件中使用 get_template_part() 函数调用即可。

通用模板差距较大时创建子模板,然后在函数调用时带上别名作为参数。如为用户页创建了一个独立的头部模板并命名为 header-user.php 时,那么使用调用函数时应该这么写 get_header('user') 或其他情况以此类推。

如下所示,我制作了一张示意图,希望可以帮助童鞋们更清晰地理解 WordPress 模板之间的关系。

wordpress_template_simple.jpg

来源:陈德馨博客(微信/QQ号:35435164),转载请保留出处和链接!

地址:

必填

选填

选填

◎已有 0 人评论,请发表您的观点。