web-dev-qa-db-fra.com

Manière correcte d'utiliser register_activation_hook

Bonjour, je développe un plugin et je suis resté bloqué à un moment donné. J'ai essayé d'explorer différents forums ainsi que le codex WordPress, mais ce n'est pas clair à 100%. Quelqu'un peut-il m'aider à comprendre comment fonctionne register_activation_hook.

J'ai le code suivant qui ne fonctionne pas:

register_activation_hook(__FILE__, 'plugin_activation_fn'  );
      function plugin_activation_fn(){
      define('PLUGIN_DIR', plugin_dir_path( __FILE__ ));
      require_once PLUGIN_DIR . 'includes/contact.php';
}

Mais si je déplace ce code en dehors de la fonction register_activation_hook, alors il fonctionnera bien

define('PLUGIN_DIR', plugin_dir_path( __FILE__ ));
require_once PLUGIN_DIR . 'options.php';
require_once PLUGIN_DIR . 'includes/contactone.php';

contact.php contient le code suivant:

if (!empty($_GET['email']) && !empty($_GET['token'])) {
    add_action('init', 'my_test_fn', 0);
}
function my_test_fn(){
    echo'test';
}

Qu'est-ce que je fais mal? S'il vous plaît aider. Merci

1
bakar

Cette citation de Le Codex indique clairement le rôle de cette fonction:

La fonction register_activation_hook enregistre une fonction de plug-in à exécuter lorsque le plug-in est activé.

Cela signifie que cette fonction fonctionne de la même manière que la méthode __construct() d'une classe. Vous pouvez l'utiliser pour définir les options initiales, mettre à jour la base de données, etc. Il ne s'exécute pas à chaque chargement du core, il ne s'exécute que lorsque vous cliquez sur le bouton Activate d'un plugin dans la liste des plugins.

2
Jack Johansson