这节课,你将学习如何将一些动作挂钩(Action Hooks)添加到模板文件中,而在接下来的课程中,你将学习如何给这些模板文件附加上一些函数。之后,你还会进一步学习如何添加过滤挂钩(Filter Hooks)。
在框架内创建行动挂钩的好处是:你附加的任何内容都可以很容易地在子主题中通过编辑函数或者添加插件的方式来重新覆盖。这样不仅避免了在子主题中创建重复的模板文件,而且也给你创建主题框架带来了更大的灵活性。
注:如果你想了解更多有关行动挂钩和过滤挂钩的内容,这个教程也许会对你有所帮助。
你需要做的是
跟随本教程,你需要:
- 安装一个WordPress开发环境
- 你自己的主题或者是本系列教程第三部分的主题文件,你可以在GitHub库相关系列中找到
- 一个代码编辑器
给页眉添加动作挂钩
我们要给页眉添加两个动作挂钩:一个在之前,一个在其中。
在header.php文件开头的<body>标签中,添加第一个动作挂钩:
<?php // action hook for any content placed before the header, including the widget area do_action ( 'wptp_before_header' ); ?> |
这个挂钩对在网站页眉上添加内容、菜单或链接有作用。
在页眉右边添加另外一个挂钩。你的子主题能使用这个挂钩插入自定义内容,比如一个搜索表单或者一个小工具。
<div class="half right"> <!-- This area is by default in the top right of the header. It contains contact details and is also where you might add social media or RSS links --> <?php // action hook for any content placed inside the right hand header, including the widget area. do_action ( 'wptp_in_header' ); ?> </div> <!-- .half right --> |
注:我已经将这个挂钩和我的主题中一对面向对象型的类一起插入 了div中。如果这是你自己的主题的话,你还需要使用一些不同的东西,但这个挂钩都是一样的。
给内容添加挂钩
主题会包括两个内容挂钩——一个在循环之前,一个在之后,两者都在#content div中。幸运的是,由于我的主题是结构性的,所以当我在 header.php文件中打开div、在文件sidebar.php 和文件page-full-width.php中关闭div时,每个挂钩我只需要添加一次就行——由于它不会调用侧边栏,所以div会被添加到全宽页面模板之中。
我们就从第一个内容挂钩开始吧。
在header.php文件的末尾和开头的 #content div中添加下列代码:
<?php // action hook for any content placed before the content, including the widget area do_action ( 'wptp_before_content' ); ?> |
这会为在目录区域内但循环之上的任何内容提供一个内容挂钩。
下面,在sidebar.php文件内,在关闭#content div之前,添加以下代码:
<?php // action hook for any content placed after the content, including the widget area do_action ( 'wptp_after_content' ); ?> |
最后在关闭#contentdiv之前添加相同的代码到page-full-width.php模板文件。
给侧边栏添加挂钩
下一步是将侧边栏的小工具区域替换成一个挂钩,这不仅可以用来在后面的阶段重新添加回小工具区域,也可以用来添加自定义代码或者重写小工具区域。
将小工具区域的所有代码替换成新的挂钩:
<?php // action hook for any content placed in the sidebar, including the widget area do_action ( 'wptp_sidebar' ); ?> |
这意味着,如果你想要在一个插件或子主题中将小工具区域替换成你自己的代码,那么你就要将新的代码附加到内容挂钩上,并重写小工具区域的内容挂钩。
给页脚添加挂钩
最后你需要给页脚添加一对挂钩:一个在其中,一个在其下。这将会被用作版权标记。
在元素 footer中,用页脚挂钩代替全部现有的代码:
<?php // action hook for any content placed before the content, including the widget area do_action ( 'wptp_footer' ); ?> |
下面,在元素footer关闭后,为版权标记添加另外一个挂钩:
<?php // action hook for any content placed before the content, including the widget area do_action ( 'wptp_after_footer' ); ?> |
注:你为小工具区域和版权标记调用的代码之后还会被替换掉,但不是直接添加到模板文件中的,而是要使用一个由相关挂钩来激活的函数来添加。我们也会将过滤挂钩添加到其中的某些函数。
小结
在模板文件中使用动作挂钩会给自己以及用户带来极大的灵活和便利。通过挂钩,你可以在任何地方插入或调者用任意样式的内容,而不需要去考虑建立新的模板文件。
下一课,我将向你展示如何创建能添加小工具区域和其他内容的函数,这些函数也都是通过这些挂钩来激活的。
- 原文出自:http://code.tutsplus.com/tutorials/adding-action-hooks-to-your-wordpress-theme-framework–cms-21664
- 由 stonetan@WordPress大学 原创翻译,未经允许,禁止转载和采用本译文。
来源:
https://www.wpdaxue.com/adding-action-hooks-to-your-wordpress-theme-framework.html