添加仅限于插件或主题的挂钩?

时间:2015-02-18 作者:kuus

我正在编写一个插件,我想创建两个钩子,如下所示:

add_action( \'myplugin/ready_for_theme\', array( __CLASS__, \'myfunction_for_themes\' ) );
add_action( \'myplugin/ready_for_plugins\', array( __CLASS__, \'myfunction_for_plugins\' ) );
如何防止主题向特定挂钩添加操作,或者,如何防止插件在主题的专用挂钩上添加操作?

谢谢

1 个回复
SO网友:TheDeadMedic

嗯,你不能。更重要的是,你为什么要这么做?钩子的全部目的是向其他开发人员开放API!

如果您想锁定插件的操作方式,可以使用单例/静态标志和/或私有方法(从挂钩的公共方法调用)。

static function myfunction_for_themes() {
    if ( ! self::$_themes_run /* private static property */ ) {
         self::_private_method();

         self::$_themes_run = true;
    }
}
一个插件/主题仍然可以解开上面的方法,但他们不能多次启动它,也不能调用self::_private_method().

结束

相关推荐

如何将POST_ROW_ACTIONS()与自定义操作函数链接

我在下面定义了一个自定义帖子类型,我想添加一个自定义行操作,以允许我通过管理面板“更新”帖子class LeagueCpt { function __construct() { add_action( \'init\', array(&$this,\'registerLeagueCPT\')); add_filter(\'post_row_actions\', array(&$this,\'post_r