J'ai besoin de savoir comment écrire une fonction pour enregistrer activation_hook
et deactivation_hook
après OOP à la mode avec les meilleures pratiques .
Je sais que nous pouvons effectuer certaines tâches à l'intérieur de l'activation/désactivation de plug-in, ce qui est essentiel dans certains cas, par exemple pour créer des plug-ins professionnels.
Merci.
Cela peut être démontré comme ceci:
Étape 1: Créez un dossier nomméincludes
(ou le nom de votre choix) dans le dossier racine du plug-in. Créez deux nouveaux fichiers nommés class-responsive-slider-activator.php
et class-responsive-slider-deactivator.php
Maintenant, dans class-responsive-slider-activator.php créer une classe -
class Responsive_Slider_Activator {
public static function activate(){
//do your codes to execute upon activation
}
}
et dans class-responsive-slider-deactivator.php créer une autre classe-
class Responsive_Slider_Deactivator {
public static function deactivate(){
//do your codes to execute upon deactivation
}
}
Étape 2: Dans le fichier de plug-in principal, créez des fonctions et enregistrez les deux points d'ancrage -
// this code runs during plugin activation
function activate_responsive_slider(){
require_once plugin_dir_path( __FILE__ ).'includes/class-responsive-slider-activator.php';
Responsive_Slider_Activator::activate();
}
register_activation_hook( __FILE__, 'activate_responsive_slider');
// this code runs during plugin deactivation
function deactivate_responsive_slider(){
require_once plugin_dir_path( __FILE__ ).'includes/class-responsive-slider-deactivator.php';
Responsive_Slider_Deactivator::activate();
}
register_deactivation_hook('__FILE__', 'deactivate_responsive_slider');
C'est tout.
N.B. - Selon votre intérêt, je voudrais signaler qu'il existe certaines tâches essentielles pouvant être accomplies via des crochets d'activation et de désactivation, tels que:
Eh bien là j'ai les moyens ci-dessous mieux-
// in the main plugin file
define( 'PLUGIN_BASE_FILE', __FILE__ );
class MainClass {
public static function init() {
register_activation_hook( PLUGIN_BASE_FILE, array( 'MainClass', 'install' ) );
}
public static function install() {
// Do what ever you like here.
}
}
MainClass::init();
Une autre façon serait de définir une classe et de l'instancier à l'aide de la méthode __construct
, créer une propriété avec la valeur __FILE__
. L'appel le register_activation_hook
dans la fonction init. Comme ci-dessous
class MainClass {
public $file;
public function __construct( $file ) {
$this->file = $file;
}
public function init() {
register_activation_hook( $this->file, array( $this, 'install' ) );
}
public function install() {
// Do what ever you like here.
}
}
// This part must have to be done in main plugin file.
$class = new MainClass(__FILE__);
$class->init();
Mais, cette instanciation doit être faite dans le fichier principal du plugin.
J'espère que cela pourra aider.