web-dev-qa-db-ja.com

プラグインインストールリンクを作成するにはどうすればいいですか?

現在、私のコードは間違ったナンスを生成しています、と私は思います。これがコードです:

$action = 'install-plugin';
$plugin = 'akismet';
wp_nonce_url(
    add_query_arg(
        array(
            'action' => $action,
            'plugin' => $plugin
        ),
        admin_url( 'update.php' )
    ),
    $action
);

次のURLが生成されます。

http://www.example.com/wp-admin/update.php?action=install-plugin&plugin=akismet&_wpnonce=27ac98eeeb

それがいつ生成されるべきか(異なるナンスに注意):

http://localhost/WordpressEN/wp-admin/update.php?action=install-plugin&plugin=akismet&_wpnonce=a625535dd6

最初のリンクをクリックすると、WordPressは403禁じられたエラーメッセージを投げます。

これを実行しますか?
1
Yoav Kadosh

まあ、私は答えを見つけたようです。アクションは以下のように変更する必要があります。

$action = 'install-plugin';
$slug = 'akismet';
wp_nonce_url(
    add_query_arg(
        array(
            'action' => $action,
            'plugin' => $slug
        ),
        admin_url( 'update.php' )
    ),
    $action.'_'.$slug
);

答えはソースコードの275行目で見つかりました。 https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-admin/includes/plugin-install .php

2
Yoav Kadosh