基于钩子名称数组创建钩子?

时间:2013-02-11 作者:TheWebs

我有一个想法,我将创建一个类,该类将接受一组钩子名称,然后创建它们,供我在任何时候、任何地方使用。

目前创建挂钩的方法是:

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);
    }
}
想法?

1 个回复
最合适的回答,由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
如您所见,动作挂钩是动态生成的。。。

结束

相关推荐

Landing Page - Redirect Loop?

为此,最近给出了此解决方案(感谢D先生)Wordpress redirect to landing page if not logged in 线<?php if($_SERVER[\'REQUEST_URI\'] != \'.../\' || $_SERVER[\'REQUEST_URI\'] != \'.../\'){ if(!is_user_logged_in()) { wp_redirect( \'http://www.mysite.com/landingp