自定义挂钩
一个重要但经常被忽视的做法是在您的插件中使用自定义挂钩,以便其他开发人员可以扩展和修改它。
自定义挂钩的创建和调用方式与 WordPress 核心挂钩的方式相同。
创建一个钩子
要创建自定义挂钩,请将do_action() 用于Actions并使用apply_filters() 用于Filters。
笔记:
我们推荐使用apply_filters() 对输出到浏览器的任何文本。特别是在前端。
这使得插件更容易根据用户的需要进行修改。
向挂钩添加回调
要将回调函数添加到自定义挂钩,请使用add_action() 用于Actions和add_filter() 用于Filters。
命名冲突
由于任何插件都可以创建自定义挂钩,因此为您的挂钩名称添加前缀以避免与其他插件发生冲突很重要。
例如,命名为过滤器的email_body
用处不大,因为其他开发人员很可能会选择相同的名称。如果用户同时安装这两个插件,可能会导致难以追踪的错误。
命名该函数wporg_email_body
(其中wporg_
是您的插件的唯一前缀)将避免任何冲突。
例子
可扩展操作:设置表单
如果您的插件将设置表单添加到管理面板,您可以使用操作来允许其他插件向其中添加自己的设置。
Foo:
Bar:
<?php
do_action( 'wporg_after_settings_page_html' );
}
现在另一个插件可以为钩子注册一个回调函数wporg_after_settings_page_html
并注入新的设置:
New 1:
<?php
}
add_action( 'wporg_after_settings_page_html', 'myprefix_add_settings' );
可扩展过滤器:自定义帖子类型
在此示例中,当注册新的帖子类型时,定义它的参数将通过过滤器传递,因此另一个插件可以在创建帖子类型之前更改它们。
<?php
function wporg_create_post_type()
{
$post_type_params = [/* ... */];
register_post_type(
'post_type_slug',
apply_filters( 'wporg_post_type_params', $post_type_params )
);
}
现在另一个插件可以为钩子注册一个回调函数wporg_post_type_params
并更改帖子类型参数:
<?php
function myprefix_change_post_type_params( $post_type_params ) {
$post_type_params['hierarchical'] = true;
return $post_type_params;
}
add_filter( 'wporg_post_type_params', 'myprefix_change_post_type_params' );
外部资源
- Michael Fields 的可扩展扩展
- Brandon Dove 的可插拔插件
- WordPress 插件烦恼 #3: Will Norris无法扩展