我有一个想法,我将创建一个类,该类将接受一组钩子名称,然后创建它们,供我在任何时候、任何地方使用。
目前创建挂钩的方法是:
function some_hook_name(){
do_action(\'some_hook_name\');
}
然后我们从那里编写一些其他函数,调用-add\\u content,然后将其传递给操作,如下所示:
add_action(\'some_hook_name\', \'add_content\');
我们开始了。
但如果我想创建一个类,在其中我可以执行以下操作:
$array_of_hook_names = array(
\'hook_one\', \'hook_two\', ...
)
所以以后我可以做:
add_action(\'hook_one\', \'add_content\');
有没有办法做到这一点?我可以这样做吗:
public function setup_hooks($array){
foreach($array as $hook_name){
do_action($hook_name);
}
}
想法?
最合适的回答,由SO网友:david.binda 整理而成
你的提议还可以——你甚至可以在WordPress本身中看到这一点。看见admin-ajax.php 您可以在其中找到这段代码:
// Register core Ajax calls.
if ( ! empty( $_GET[\'action\'] ) && in_array( $_GET[\'action\'], $core_actions_get ) )
add_action( \'wp_ajax_\' . $_GET[\'action\'], \'wp_ajax_\' . str_replace( \'-\', \'_\', $_GET[\'action\'] ), 1 );
if ( ! empty( $_POST[\'action\'] ) && in_array( $_POST[\'action\'], $core_actions_post ) )
add_action( \'wp_ajax_\' . $_POST[\'action\'], \'wp_ajax_\' . str_replace( \'-\', \'_\', $_POST[\'action\'] ), 1 );
add_action( \'wp_ajax_nopriv_autosave\', \'wp_ajax_nopriv_autosave\', 1 );
if ( is_user_logged_in() )
do_action( \'wp_ajax_\' . $_REQUEST[\'action\'] ); // Authenticated actions
else
do_action( \'wp_ajax_nopriv_\' . $_REQUEST[\'action\'] ); // Non-admin actions
如您所见,动作挂钩是动态生成的。。。