WordPress中的基本范例是回调处理程序。操作、过滤器、小部件、元盒等等……所有操作都是通过为某些触发器注册特定的回调处理程序来运行的。这并不总是最优雅的方式,但这是每个初学者都必须学习的方式,所以无论何时你不确定该做什么,都要坚持这种模式。
因此,请提供四个操作:
do_action( \'home_primary_custom\' );
do_action( \'home_secondary_custom_1\' );
do_action( \'home_secondary_custom_2\' );
do_action( \'home_secondary_custom_3\' );
然后,您或第三方开发人员可以使用注册这些操作的回调
add_action()
.
这是可以改进的:使用前缀以防止与插件或WordPress核心更改发生冲突,并运行一个数组以保持代码紧凑且可读。
$prefix = get_stylesheet();
$custom_actions = array (
\'home_primary_custom\',
\'home_secondary_custom_1\',
\'home_secondary_custom_2\',
\'home_secondary_custom_3\'
);
foreach ( $custom_actions as $custom_action )
do_action( "$prefix_$custom_action" );
现在,对于普通模板来说,这可能已经太长了,因此您可以将代码封装在自定义函数中,并将其注册到另一个自定义操作:
// front-page.php
do_action( get_stylesheet() . \'_custom_front_actions\' );
// functions.php
add_action( get_stylesheet() . \'_custom_front_actions\', \'custom_front_actions\' );
/**
* Execute custom front actions and print a container if there are any callbacks registered.
*
* @wp-hook get_stylesheet() . \'_custom_front_actions\'
* @return bool
*/
function custom_front_actions()
{
$has_callbacks = FALSE;
$prefix = get_stylesheet();
$custom_actions = array (
\'home_primary_custom\',
\'home_secondary_custom_1\',
\'home_secondary_custom_2\',
\'home_secondary_custom_3\'
);
// Are there any registered callbacks?
foreach ( $custom_actions as $custom_action )
{
if ( has_action( "$prefix_$custom_action" ) )
{
$has_callbacks = TRUE;
break;
}
}
// No callbacks registered.
if ( ! $has_callbacks )
return FALSE;
print \'<div class="\' . esc_attr( "$prefix-custom-front-box" ) . \'">\';
foreach ( $custom_actions as $custom_action )
do_action( "$prefix_$custom_action" );
print \'</div>\';
return TRUE;
}
现在,仅当注册了任何回调时,才可以打印自定义容器。第三方开发人员可以注册自己的回调或删除您的回调。你的
front-page.php
只需要一行额外的代码。