Comment rediriger vers la page de paramètres une fois le plugin activé?

15

J'ai créé mon propre plugin. Tout semble bien se passer, mais une chose que je veux faire dans ce plugin est une redirection vers la page des paramètres du plugin correspondante lorsque le plugin est activé.

Par exemple:
http://www.example.com/wordpress/wp-admin/options-general.php?page=rotator

Existe-t-il un moyen de rediriger vers la page correspondante lors de l'activation, par exemple avec register_activation_hook ?

    
posée Vignesh Pichamani 17.09.2013 - 15:02

3 réponses

16

Peut-être utilisez-vous la fonction wp_redirect() dans le crochet d'activation. Dans l'exemple suivant, myplugin_settings est un espace réservé. Normalement, c’est simplement le $hook_suffix que vous récupérez de $hook_suffix = add_menu_page( /* etc. */ ); et des fonctions similaires.

CE CODE NE FONCTIONNE PAS, LISEZ PLUS BAS

register_activation_hook(__FILE__, 'cyb_activation');
function cyb_activation()
{
    // Don't forget to exit() because wp_redirect doesn't exit automatically
    exit( wp_redirect( admin_url( 'options-general.php?page=myplugin_settings' ) ) );
}

Références:

  1. Enregistrer le crochet d'activation
  2. admin_url ()

MODIFIER

La redirection à l'intérieur du hook d'activation semble être effectuée avant l'activation effective du plug-in, peut-être à cause de l'appel de exit () avant que l'activation ne soit exécutée. Ce code semble bien fonctionner à l'aide de Activé_plugin , l'action hoook:

.
function cyb_activation_redirect( $plugin ) {
    if( $plugin == plugin_basename( __FILE__ ) ) {
        exit( wp_redirect( admin_url( 'options-general.php' ) ) );
    }
}
add_action( 'activated_plugin', 'cyb_activation_redirect' );

Si vous utilisez ce code en dehors du fichier de plugin principal, vous devrez repaler le% de__FILE__ avec le chemin du fichier de plugin principal.

PENSEE

Réorienter l'utilisateur après l'activation de votre plugin n'est pas une très bonne approche. Dans Wordpress, vous pouvez activer les plugins en bloc. Que se passe-t-il alors si vous effectuez une redirection dans cette situation? Vous interromprez l’activation de certains plug-ins, peut-être pas si votre plug-in est le dernier à être activé, mais définitivement, vous cassez l'expérience utilisateur.

    
réponse donnée cybmeta 17.09.2013 - 15:26
7

Vous devriez pouvoir le faire comme ceci:

register_activation_hook(__FILE__, 'my_plugin_activate');
add_action('admin_init', 'my_plugin_redirect');

function my_plugin_activate() {
    add_option('my_plugin_do_activation_redirect', true);
}
// Solution 1
function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
        delete_option('my_plugin_do_activation_redirect');
         wp_redirect("options-general.php?page=rotator");
         //wp_redirect() does not exit automatically and should almost always be followed by exit.
         exit;
    }
}

// OR

//Solution 2 (@kaiser suggestion)
function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
        delete_option('my_plugin_do_activation_redirect');
         exit( wp_redirect("options-general.php?page=rotator") );
    }
}

MISE À JOUR

Même s'il s'agit d'un commentaire en ligne, rappelez-vous:

  

wp_redirect () ne se ferme pas automatiquement et devrait presque toujours être   suivi de la sortie.

Exemple spécifique

<?php
    wp_redirect( $location, $status );
    exit;
?>

UPDATE 10/29/2013

Cela n'a pas été mentionné, mais veuillez noter que ma solution offre la possibilité de vérifier si c'est le cas ou non de faire une redirection vers la page des paramètres du plug-in. Vérifiez my_plugin_activate et la condition if dans my_plugin_redirect .

J'espère que ça aide!

    
réponse donnée iEmanuele 17.09.2013 - 15:24
3

Bonjour, j’utilise la redirection de code à soufflet après l’activation du plugin. Vous pouvez utiliser ce code. Ça marche bien.

register_activation_hook(__FILE__, 'nht_plugin_activate');
add_action('admin_init', 'nht_plugin_redirect');

function nht_plugin_activate() {
add_option('nht_plugin_do_activation_redirect', true);
}

function nht_plugin_redirect() {
if (get_option('nht_plugin_do_activation_redirect', false)) {
    delete_option('nht_plugin_do_activation_redirect');
    if(!isset($_GET['activate-multi']))
    {
        wp_redirect("edit.php?post_type=headline&page=news-headline");
    }
 }
}
    
réponse donnée csehasib 15.02.2015 - 06:22

Lire d'autres questions sur les étiquettes