web-dev-qa-db-fra.com

Afficher un message de confirmation avant l'activation du plug-in

Je souhaite afficher un message lorsque l'utilisateur tente d'activer mon plugin. Ce message lui demandera s'il souhaite vraiment activer le plugin ou, s'il change d'avis, annuler l'activation. Comment puis-je accomplir cela? Ceci est le code du message d’avertissement juste pour référence.

--- CODE MIS À JOUR ---

register_activation_hook( __FILE__, 'on_activation' );

function on_activation() {
   // Add the admin notice:
   add_action( 'admin_notices', 'on_activation_note' );

   // Then you should check the DB option: 
   $plugins = get_option( 'active_plugins' );

   // Do all the checks from the confirmation message
   if ( !in_array(__FILE__, $plugins) ) {
   unset( $plugins[ dirname( __FILE__ ) ] );
   update_option( 'active_plugins', $plugins );
   }
}

function on_activation_note() {
global $pagenow;
if ( $pagenow == 'plugins.php' ) {
    ob_start(); ?>
    <div id="message" class="error">
    <p><strong>Aviso</strong></br>
    Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
    <p><span><a class="button" href="">Cancelar</a></span>
    <span><a class="button" href="">Continuar</a></span></p>
    </div>
    <?php
    echo ob_get_clean();
    }
} 
4
Daniel

Vous pouvez en savoir plus sur les détails de activation sur cette réponse .

En gros, vous devez associer une fonction à register_activation_hook() - en supposant que cela se trouve dans votre dossier principal du plugin et non dans un sous-dossier:

register_activation_hook( __FILE__, 'on_activation' );
function wpse65190_on_activation()
{
   // Add an admin notice:
   add_action( 'admin_notices', 'wpse65190_on_activation_note' );

   // Then you should check the DB option: 
   $plugins = get_option( 'active_plugins' );

   if ( ! in_array( dirname( __FILE__ ), $plugins )
   {
       unset( $plugins[ dirname( __FILE__ ) ] );
       update_option( 'active_plugins', $plugins );
   }
}
function wpse65190_on_activation_note()
{
    // Add your note here: Maybe a form?
}

C'est aussi simple que ça. Vous devez juste combler les lacunes. Si vous avez un exemple de travail complet, veuillez mettre à jour cette réponse avec votre code de travail. Merci.

3
kaiser

Vous devez créer deux distinctions activé et activé. Vous DOVE TO avez votre plugin activé AKA inclus pour WP pour savoir quelle logique traiter. Même si le plug-in est activé, vous pouvez toujours désactiver la fonctionnalité et avertir l'utilisateur que le plug-in est activé, mais pas encore activé.

Plusieurs plugins utilisent une étape secondaire d'activation. Vous pouvez consulter Privé WP et Pack SEO Tout-en-un pour voir comment ils y parviennent.

Voici comment je l'aborderais:

  1. Définir une notification de l'administrateur une fois le plugin activé pour alerter l'utilisateur dont il a besoin pour activer la fonctionnalité en premier.
  2. Si une certaine chaîne de requête est définie, ajoutez une option indiquant qu'ils ont choisi de activer la fonctionnalité (c'est-à-dire update_option()). Vous souhaiterez peut-être créer une page de paramètres avec un menu déroulant de sélection indiquant son état d'activation.
  3. Cochez cette option en utilisant get_option() pour désactiver la notification de l'administrateur et poursuivre le traitement de votre code.
1
Brian Fegter