类中的激活/停用函数必须是静态的吗?

时间:2017-11-29 作者:Spencer

的说明register_uninstall_hook\'s$callback 参数状态:

必须是静态方法或函数1

没有这样的评论register_activation_hookregister_deactivation_hook. 然而,在Codex条目中register_activation_hook 下面是一个示例:

或者,因为激活挂钩需要一个静态函数,如果您位于\\uu构造()中:2

在GitHub问题中,“为什么激活静态方法?”,用户声明:

您不能将它们定义为标准函数,因为它们需要启动插件的实例,但您不能在启动激活函数之前实例化插件,因为构造函数将启动(即使是空的),因此函数需要标记为静态,以便可以设置准备插件进行取消/激活所需的任何准备工作3

当使用类来(取消)激活插件时,函数是否需要是静态的?如果是的话,对原因的解释是否正确?

2 个回复
SO网友:Lucas Vendramini

取决于您想要实现它的方式。之所以使用static,是因为您不必实例化类来使用类的函数。这取决于你。我通常会这样做:

<?php

/*it\'s good practice that every class has its own file. So put it in for example \'classes/class-hooks.php\' and require it properly in your plugin file. */

class Hooks{
    static function activation(){
       //the code you want to execute when the plugin activates
    }

    static function deactivation(){
       //the code you want to execute when the plugin deactivates
    }

    static function uninstall(){
      //the code you want to execute when the plugin uninstalled
    }

}

...

// you should use this in your plugin file

register_activation_hook(__FILE__, \'Hooks::activation\' );
register_deactivation_hook(__FILE__, \'Hooks::deactivation\');
register_uninstall_hook(__FILE__, \'Hooks::uninstall\');


这是我知道的一种简单的方法,我阅读代码的插件通常都是这样做的。希望有帮助!

SO网友:zahafyou

在我的插件文件夹中,我创建了一个名为includes的文件夹,其中包含两个php文件

#1 = my-plugin-activate.php

<?php
/**
 * @package MyPlugin
 */

class MyPluginActivate {
   public static function activate() {
        flush_rewrite_rules();
   }
} 

#2 - my-plugin-desactivate.php

<?php
/**
 * @package MyPlugin
 */

class MyPluginDeactivate {
   public static function deactivate() {
        flush_rewrite_rules();
   }
} 
在我的主文件php中:我的插件。php我在MyPlugin类的底部需要这两个文件,我们必须首先实例化该类并注册它

$fm=新建MyPlugin();

$fm->寄存器();

有两种方法要求文件外部激活。php并停用。php

register\\u activation\\u hook(FILE, 阵列($fm,\'激活\');

require\\u once plugin\\u dir\\u path(FILE ) . \'包括/我的插件激活。php’;寄存器\\u停用\\u挂钩(FILE, 数组(\'MyPluginActivate\',\'activate\');

停用也一样

enter image description here

结束

相关推荐

将USER_ACTIVATION_KEY用于其他目的

我需要知道使用是否安全user_activation_key (来自WP_User) 用于其他目的,如电子邮件验证(我将创建的一个功能,在激活创建的帐户之前先发送电子邮件验证)?下面是工作原理。用户将使用我的自定义注册表进行注册,该注册表仅在前端可用。成功注册后,将通过电子邮件通知用户,已使用以下约定沿注册时创建的激活链接创建了帐户:http://www.example.com/verify/?key=SAMPLEACTIVATIONKEY4321你认为这样安全吗?