activation – ¿Deben las funciones de activación / desactivación en una clase ser estáticas?

Pregunta:

La descripción del parámetro $callback register_uninstall_hook indica:

Debe ser un método o función estática. 1

No existe tal comentario para register_activation_hook o register_deactivation_hook . Sin embargo, en la entrada del Codex para register_activation_hook hay un ejemplo que dice:

O, debido a que el gancho de activación requiere una función estática, si está dentro de un __construct (): 2

En un problema de GitHub, "¿por qué se activa un método estático?", Un usuario dice:

No puede definirlas como funciones estándar porque requieren una instancia del complemento para activarse, pero no puede crear una instancia del complemento antes de activar la función de activación porque el constructor se activará (incluso si está vacío), por lo que las funciones deben hacerlo estar marcado como estático para que se pueda configurar cualquier trabajo preliminar necesario para preparar el complemento para la desactivación / activación. 3

Cuando se usan clases para (des) activar un complemento, ¿se requiere que las funciones sean estáticas? Si es así, ¿es correcta la explicación de por qué?

Respuesta:

Depende de la forma en que desee implementarlo. La estática se usa porque no es necesario crear una instancia de la clase para usar las funciones de la clase. Tu decides. Generalmente haría:

<?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');


Esta es la forma simple que conozco de hacerlo y los complementos que leo el código generalmente lo hacen de esa manera. ¡Espero que ayude!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım