J'ai créé le plugin de mes propres. Tout semble aller pour le mieux, mais une chose que je veux faire dans ce plug-in est la redirection vers la page des paramètres du plug-in correspondante lorsque le plug-in 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
?
Peut-être en utilisant la fonction wp_redirect()
dans le hook d’activation. Dans l'exemple suivant, myplugin_settings
est un espace réservé. Normalement, il s’agit simplement du $hook_suffix
que vous obtenez de $hook_suffix = add_menu_page( /* etc. */ );
et de 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:
EDIT
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 l'exécution de l'activation. Ce code semble bien fonctionner avec activé_plugin 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 __FILE__
avec le chemin du fichier de plugin principal.
PENSAIT
Redirection de 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 allez interrompre l'activation de certains plugins, peut-être pas si votre plugin est le dernier à être activé, mais définitivement, vous cassez l'expérience utilisateur.
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") );
}
}
UPDATE
Même si c'est un commentaire en ligne, rappelez-vous:
wp_redirect () ne se ferme pas automatiquement et devrait presque toujours être suivi de exit.
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!
Bonjour, j'ai utilisé 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");
}
}
}