Actuellement, mon code génère le mauvais nonce, je suppose. Voici le code:
$action = 'install-plugin';
$plugin = 'akismet';
wp_nonce_url(
add_query_arg(
array(
'action' => $action,
'plugin' => $plugin
),
admin_url( 'update.php' )
),
$action
);
Ce qui génère l'URL suivante:
http://www.example.com/wp-admin/update.php?action=install-plugin&plugin=akismet&_wpnonce=27ac98eeeb
Quand il devrait générer (notez les différents nonce):
http://localhost/WordpressEN/wp-admin/update.php?action=install-plugin&plugin=akismet&_wpnonce=a625535dd6
en cliquant sur le premier lien, WordPress génère une erreur interdite 403 avec le message:
Es-tu sûr de vouloir faire ça?
Eh bien, on dirait que j'ai trouvé la réponse. L'action devrait être changée comme suit:
$action = 'install-plugin';
$slug = 'akismet';
wp_nonce_url(
add_query_arg(
array(
'action' => $action,
'plugin' => $slug
),
admin_url( 'update.php' )
),
$action.'_'.$slug
);
La réponse a été trouvée à la ligne 275 dans le code source: https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-admin/includes/plugin -install.php