web-dev-qa-db-fra.com

Comment créer un lien d'installation de plugin?

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?
1
Yoav Kadosh

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

2
Yoav Kadosh