Как создать ссылку для установки плагина WordPress - PullRequest
3 голосов
/ 16 марта 2011

Я создал плагин, который заменяет предыдущий плагин, который я написал, и добавляет некоторые дополнительные вещи.Я хочу создать предупреждение на странице настроек моего старого плагина со ссылкой для загрузки и установки моего нового плагина и сообщить им, что старый плагин больше не поддерживается его разработчиком.В настоящее время, со страницы плагина моей админ-панели, ссылки для установки выглядят следующим образом:

http://www.example.com/wp-admin/network/update.php?action=install-plugin&plugin=wptouch&_wpnonce=a8d64aa295

Мне кажется, что при создании URI нужно учитывать как минимум две вещи:

  1. Проверьте, является ли это многосайтовой установкой
  2. Убедитесь, что я сгенерировал правильный одноразовый номер.

Кто-нибудь знает, как правильно это сделать?Что еще нужно учитывать при создании этого URI?

Заранее спасибо за помощь.

Ответы [ 2 ]

7 голосов
/ 16 марта 2011

Я нашел ответ. В wp-admin/import.php есть отличный пример того, как это работает.

Вот моя реализация:

$plugin_name = 'my_plugin_name';
$install_link = '<a href="' . esc_url( network_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin_name . '&TB_iframe=true&width=600&height=550' ) ) . '" class="thickbox" title="More info about ' . $plugin_name . '">Install ' . $plugin_name . '</a>';

Затем просто выведите этот тег ссылки в любом месте на ваших страницах администратора.

Если вы хотите проявить фантазию и добавить эффект модального окна Thickbox, просто используйте функцию add_thickbox() и присоедините ее к действию, которое вызывается в типичном запросе администратора, например:

add_action('admin_menu', 'my_plugin_add_thickbox');
function my_plugin_add_thickbox() {
    add_thickbox();
}

Это должно сделать это!

1 голос
/ 16 января 2015
$action = 'install-plugin';
$slug = 'akismet';
wp_nonce_url(
    add_query_arg(
        array(
            'action' => $action,
            'plugin' => $slug
        ),
        admin_url( 'update.php' )
    ),
    $action.'_'.$slug
);

Используйте это.Я нашел это, и я уверен, что это будет работать.

...