[Résolu] Message personnalisé lors de la désactivation de mon plugin n’apparait pas (Créer un compte)

  • WordPress :5.8
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2408138
    michel46
    Participant
    Initié WordPress
    2 contributions

    Bonjour,

    Ma configuration WP actuelle

    version: 6.0
    site_language: fr_FR
    user_language: fr_FR
    timezone: Europe/Paris
    permalink: /%postname%/
    https_status: false
    multisite: false
    user_registration: 0
    blog_public: 1
    default_comment_status: open
    environment_type: production
    user_count: -1
    dotorg_communication: true
    server_version: 10.6.7-MariaDB-2ubuntu1

    Problème(s) rencontré(s) :

    Je commence avec les plugins WordPress et j’essaie quelques codes pour comprendre leur fonctionnement.

    J’essaie d’afficher un message personnalisé lorsque j’active et désactive mon plugin.

    Le message d’activation fonctionne très bien mais je n’ai pas de message lors de la désactivation. La valeur de la variable transient change mais aucun message lorsque je désactive le plugin.

    Je pensais que add_action définit une fonction à exécuter sur chaque action d’administration sur le plugin… Ai-je tort ?

    Pouvez-vous m’aider? Merci

    class DuplicatePostPlugin
    {
    
        const DUPLICATE_POST_ACTIVATED = 'duplicate_post_activated';
    
        public function __construct(string $file) {
            register_activation_hook($file, [$this, 'plugin_activation_callback']);
            register_deactivation_hook($file, [$this, 'plugin_deactivation_callback']);
            add_action('admin_notices', [$this, 'notice_activation_callback']);
        }
    
        public function plugin_activation_callback() : void {
            set_transient(self::DUPLICATE_POST_ACTIVATED, 1);
        }
    
        public function plugin_deactivation_callback() : void {
            set_transient(self::DUPLICATE_POST_ACTIVATED, 0);
            //do_action('admin_notices');
        }
    
        public function notice_activation_callback() : void {
            if (get_transient(self::DUPLICATE_POST_ACTIVATED) == 1) {
                self::render('notices', [ 'message' => "Activation OK"]);
            } else if (get_transient(self::DUPLICATE_POST_ACTIVATED) == 0){
                self::render('notices', [ 'message' => "Deactivation OK"]);
            }
            //delete_transient(self::DUPLICATE_POST_ACTIVATED);
        }
    
        public static function render(string $name, array $args = []) : void {
            extract($args);
            $file = DUPLICATE_POST_PLUGIN_DIR . "views/$name.php";
            ob_start();
            include_once($file);
            echo ob_get_clean();
        }
    }

     

    • Ce sujet a été modifié le il y a 16 heures et 38 minutes par michel46.
    #2408152
    mathieu42
    Participant
    Maître WordPress
    1210 contributions

    après l’appel de l’action de désactivation, la page de la liste des extensions est rafraichie.

    et donc quand cette page se recharge, votre extension n’est plus active et donc l’action « admin_notices » n’appelle plus votre code d’affichage.

    #2408203
    michel46
    Participant
    Initié WordPress
    2 contributions

    OK

    Merci

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.