現在、私のコードは間違ったナンスを生成しています、と私は思います。これがコードです:
$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禁じられたエラーメッセージを投げます。
これを実行しますか?
まあ、私は答えを見つけたようです。アクションは以下のように変更する必要があります。
$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