在您的主題中利用 TGM 插件激活庫的強大功能

在您的主題中利用 TGM 插件激活庫的強大功能

主題并不意味著具有功能性,但作為主題開發人員,我們主要需要包含一些功能以使我們的主題更好一點,并且具有功能性。

在本教程中,我們將了解“插件領域”一詞,并學習使用 Thomas Griffin 編寫的出色工具:TGM 插件激活庫。

主題功能:入侵插件領地

主題旨在改變您的 WordPress 網站的設計。理想情況下,它應該是視覺。但在 WordPress 的黃金時代,主題開發人員經常在其主題中包含功能特性,以保持市場競爭力。本來應該如此,但事實卻如此。

這是對插件領地的入侵。我們可以用簡單的術語來定義“插件領域”:代碼的功能部分位于該領域的邊界內。改變網站功能的每一段代碼都需要作為插件提供(如果尚未在 WordPress 核心中提供)。

在我之前的一篇文章(“制作完美的 WordPress 主題”系列中)中,我提到了“插件領域”的經驗法則

如果該功能與網站的視覺外觀有關,則應位于主題中,但如果與網站的功能有關,則應在主題中應作為單獨的插件包含在內。

很簡單,對吧?

盡管人們仍然傾向于將功能位硬編碼到他們的主題中,但主題目錄(如 WordPress.org 和 ThemeForest)不接受侵入“插件領域”的主題。因此,提供帶有主題的功能就成了一個問題。

幸運的是,有一個相當簡單的解決方案,并且它不違反“插件領域”規則。

介紹 TGM 插件激活庫

TGM Plugin Activation 是一個輕量級庫,旨在將主題與插件捆綁在一起。這個想法很簡單:當用戶安裝您的主題時,它會讓用戶安裝來自 WordPress.org、外部網站或主題文件夾的插件。以下是該庫的創建者 Thomas Griffin 對這個方便的小工具的定義:

TGM 插件激活 是一個 PHP 庫,可讓您輕松地為您的 WordPress 主題(和插件)請求或推薦插件。它允許您的用戶使用本機 WordPress 類、函數和接口以單一或批量方式安裝甚至自動激活插件。您可以引用預打包的插件、WordPress 插件存儲庫中的插件,甚至是互聯網上其他地方托管的插件。

這可能是解決“插件領地入侵”問題的最明智的解決方案。而且申請也很容易。

我們來看看吧!

安裝 TGM 插件激活

安裝 TGM 插件激活非常簡單。只需按照以下步驟操作:

  • 從頁面的“下載”部分下載 TGM 插件激活庫。
  • 打開 zip 文件并將 class-tgm-plugin-activation.php 解壓到您的主題文件夾(任何您喜歡的位置)。
  • 打開主題的 functions.php 文件并使用 require_once() 函數在主題中(一次)請求類文件。
  • 創建一個函數來配置 TGM 插件激活,并通過 add_action() 函數將其掛鉤到 tgmpa_register。
  • 完成!

這非常簡單,您甚至不需要復雜的 PHP 代碼來要求或推薦插件。看一下下面的代碼:

<?php /**  * Since I'm already doing a tutorial, I'm not going to include comments to  * this code, but if you want, you can check out the "example.php" file  * inside the ZIP you downloaded - it has a very detailed documentation.  */  require_once dirname( __FILE__ ) . '/class-tgm-plugin-activation.php';  add_action( 'tgmpa_register', 'mytheme_require_plugins' );  function mytheme_require_plugins() {      $plugins = array( /* The array to install plugins */ );     $config = array( /* The array to configure TGM Plugin Activation */ );      tgmpa( $plugins, $config );  }  ?>

從現在開始,您可以通過在剛剛創建的函數中設置 $plugins 變量來讓用戶安裝新插件。

讓我們看看它是如何完成的。

通過 TGM 插件激活安裝插件

從上面可以看出,$plugins 變量是一個數組。要定義要安裝的插件,您需要在該數組中創建數組(以便您可以設置自己的參數)。聽起來很難,但事實并非如此:

<?php $plugins = array( 	array( /* my first plugin */ ), 	array( /* my second plugin */ ), 	array( /* my third plugin */ ), 	// ... 	array( /* my nth plugin */ ) );  ?>

有幾個參數可供使用:

  • name(字符串,必需)- 插件的名稱。
  • slug (字符串,必需)- 插件的 slug(通常是其文件夾的名稱)。
  • required (布爾值,必需) – 如果設置為 true,您的主題將“需要”該插件。如果false,主題將“推薦”它。
  • source (字符串,有時需要)- 插件的源。如果是 WordPress.org 插件,則不應使用此參數;否則,這是必需的。
  • version (字符串,可選) – 插件所需的最低版本。例如;如果主題用戶已經安裝了所需的插件,但沒有達到您指定的最低版本號,TGM 插件激活會警告用戶進行更新。
  • force_activation (布爾值,可選) – 如果設置為 true,當您的主題處于活動狀態時,用戶將無法停用插件。有點煩人,但在某些情況下可能是必要的。
  • force_deactivation (布爾值,可選) – 如果設置為 true,一旦用戶切換主題,插件將被停用。
  • external_url (字符串,可選) – 如果設置,插件的名稱將鏈接到插件要求通知中的此地址。

您可以通過三個選項讓您的用戶通過 TGM 插件激活安裝插件:您可以從 WordPress 插件目錄、外部源(例如您自己的服務器或 CDN)或您的主題文件夾(例如/my-theme/plugins/shortcodes.zip)。

需要 WordPress.org 的插件

<?php $plugins = array( 	array( 		'name'      => 'BuddyPress', 		'slug'      =&gt; 'buddypress', 		'required'  =&gt; false, // this plugin is recommended 	) );  ?&gt; 

從外部源請求插件

<?php $plugins = array( 	array( 		'name'               => 'My Awesome Plugin', 		'slug'               =&gt; 'my-awesome-plugin', 		'source'             =&gt; 'http://files.my-website.com/my-awesome-plugin.zip', 		'required'           =&gt; true, // this plugin is required 		'external_url'       =&gt; 'http://my-website.com/introducing-my-awesome-plugin', // page of my plugin 		'force_deactivation' =&gt; true, // deactivate this plugin when the user switches to another theme 	) );  ?&gt; 

從主題目錄中獲取插件

<?php $plugins = array( 	array( 		'name'               => 'My Super Sleek Slider', 		'slug'               =&gt; 'my-super-sleek-slider', 		'source'             =&gt; get_stylesheet_directory() . '/lib/plugins/my-super-sleek-slider.zip', // The "internal" source of the plugin. 		'required'           =&gt; true, // this plugin is required 		'version'            =&gt; '1.2', // the user must use version 1.2 (or higher) of this plugin 		'force_activation'   =&gt; false, // this plugin is going to stay activated unless the user switches to another theme 	) );  ?&gt; 

配置 TGM 插件激活

注意到示例代碼末尾帶有兩個參數的 tgmpa() 函數了嗎?第二個參數是 $config 變量,它也恰好是一個數組,就像 $plugins 參數一樣。顧名思義,您可以使用此數組配置 TGM 插件激活庫。它還有自己的一組選項需要設置:

  • id(字符串) – 您在主題中實現的 TGM 插件激活庫的唯一 ID。這實際上非常重要:如果另一個插件也使用 TGM 插件激活,則不同的 ID 可以防止沖突。
  • default_path (string) – 主題內插件的默認絕對路徑。設置此選項后,您可以使用 ZIP 文件的名稱作為插件的 source 參數。
  • menu (字符串) – 插件安裝頁面的菜單項。
  • has_notices (boolean) – 如果設置為 true,則會顯示必需/推薦插件的管理員通知。
  • dismissible (boolean) – 如果設置為 true,用戶可以“忽略”通知。
  • dismiss_msg (string) – 如果 dismissable 選項設置為 false,則此消息將顯示在管理通知上方。
  • is_automatic (boolean) – 如果設置為 true,插件將在用戶同意安裝后激活。
  • message (string) – 在插件表之前顯示的可選 HTML。
  • strings (array) – 另一個 array 包含要顯示的消息。您也可以將它們設置為可翻譯字符串。查看 example.php 文件以查看消息字符串的完整列表。
<?php $config = array( 	'id'           => 'mytheme-tgmpa', // your unique TGMPA ID 	'default_path' =&gt; get_stylesheet_directory() . '/lib/plugins/', // default absolute path 	'menu'         =&gt; 'mytheme-install-required-plugins', // menu slug 	'has_notices'  =&gt; true, // Show admin notices 	'dismissable'  =&gt; false, // the notices are NOT dismissable 	'dismiss_msg'  =&gt; 'I really, really need you to install these plugins, okay?', // this message will be output at top of nag 	'is_automatic' =&gt; true, // automatically activate plugins after installation 	'message'      =&gt; '<!--Hey there.-->', // message to output right before the plugins table 	'strings'      =&gt; array(); // The array of message strings that TGM Plugin Activation uses );  ?&gt; 

總結一切

正如您所看到的,通過 WordPress 主題提供功能并非不可能 – 您只需考慮用戶從您的主題切換到另一個主題時的情況。 TGM 插件激活庫提供了一種非常聰明的按書本操作的方法。

您覺得這個工具怎么樣?您曾經使用過它,或者您打算將來使用它嗎?請在下面發表評論,告訴我們您的想法。如果您喜歡這篇文章,請不要忘記與您的朋友分享!

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享