2011-03-16 68 views
2

我創建了一個插件,它取代了我寫的以前的插件並添加了一些額外的東西。我想在舊插件的設置頁面中創建一個提醒,並提供鏈接以下載並安裝我的新插件,並通知他們開發人員不再支持舊插件。目前,從我的管理面板的插件頁面,安裝鏈接看起來是這樣的:如何生成一個WordPress插件安裝鏈接

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

在我看來,至少有兩件事太保持創建URI時:

  1. 檢查不管這是否是多站點設置
  2. 確保我生成正確的隨機數。

有沒有人知道如何正確地做到這一點?生成此URI時是否還有其他需要考慮的事項?

在此先感謝您的幫助。

回答

6

我找到了答案。在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(); 
} 

這應該做它!

+0

使用thickbox時,「安裝」按鈕對我無效。任何人都有這個問題? – Danger 2017-10-07 16:21:54

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

使用此。我發現這一點,我相信它會起作用。