我现在正在研究一个主题,我还想在某些位置添加一些自定义挂钩,以实现更大的灵活性。
我想为主题添加多个挂钩。我有不同的部分(页眉、内容、侧边栏、页脚等),在所有这些位置上,我想添加一个before
, inside
和after
钩
因此,起初我使用这样的代码块为我的主题创建多个挂钩:
/* Teaser hooks */
function _s_before_teaser() { do_action(\'_s_before_teaser\', \'teaser\'); }
function _s_inside_teaser() { do_action(\'_s_inside_teaser\', \'teaser\'); }
function _s_after_teaser() { do_action(\'_s_after_teaser\', \'teaser\'); }
/* Header hooks */
function _s_before_header() { do_action(\'_s_before_header\', \'header\'); }
function _s_inside_header() { do_action(\'_s_inside_header\', \'header\'); }
function _s_after_header() { do_action(\'_s_after_header\',\'header\'); }
......
/* Sidebar hooks */
function _s_before_sidebar() { do_action(\'_s_before_sidebar\', \'sidebar\'); }
function _s_inside_sidebar() { do_action(\'_s_inside_sidebar\', \'sidebar\'); }
function _s_after_sidebar() { do_action(\'_s_after_sidebar\', \'sidebar\'); }
/* Footer hooks */
function _s_before_footer() { do_action(\'_s_before_footer\', \'footer\'); }
function _s_inside_footer() { do_action(\'_s_inside_footer\', \'footer\'); }
function _s_after_footer() { do_action(\'_s_after_footer\', \'footer\'); }
有了这个代码,我可以使用
<?php _s_before_header(); ?>
在模板文件中。
使用此设置,一切正常。
But I find the code, or at least the big code block ugly and also dont want to use duplicate(kinda) code.
因此,我将此代码改写为以下代码块:
function _s_create_all_hooks() {
$sections = array(
\'header\',
\'branding\',
\'navigation\',
\'content\',
\'single\',
\'sidebar\',
\'footer\'
);
foreach ($sections as $section) {
do_action(\'_s_before_\'.$section, $section);
do_action(\'_s_inside_\'.$section, $section);
do_action(\'_s_after_\'.$section, $section);
}
}
add_action(\'wp_loaded\', \'_s_create_all_hooks\', 10, 1 );
这也是可行的,但是。。。
用这种方法我无法使用<?php _s_before_header(); ?>
再也没有了,因为我再也没有任何功能了。
相反,我现在必须在模板中使用它<?php do_action(\'_s_before_header\', \'header\'); ?>
但我对这种方法并不感到兴奋,我还发现do_action
我的模板中的代码片段很难看。
我已经在网上搜索过了,找到了几个钩子教程,但在所有教程和文章中只创建了一个钩子示例。没有一篇文章涉及同时创建多个挂钩。
My question is, what is the best practice to create multiple hooks at once?