0

0

在您的主题中利用 TGM 插件激活库的强大功能

王林

王林

发布时间:2023-09-01 22:49:02

|

1089人浏览过

|

来源于php中文网

原创

在您的主题中利用 tgm 插件激活库的强大功能

主题并不意味着具有功能性,但作为主题开发人员,我们主要需要包含一些功能以使我们的主题更好一点,并且具有功能性。

在本教程中,我们将了解“插件领域”一词,并学习使用 Thomas Griffin 编写的出色工具:TGM 插件激活库。

主题功能:入侵插件领地

主题旨在改变您的 WordPress 网站的设计。理想情况下,它应该是视觉。但在 WordPress 的黄金时代,主题开发人员经常在其主题中包含功能特性,以保持市场竞争力。本来应该如此,但事实却如此。

这是对插件领地的入侵。我们可以用简单的术语来定义“插件领域”:代码的功能部分位于该领域的边界内。改变网站功能的每一段代码都需要作为插件提供(如果尚未在 WordPress 核心中提供)。

在我之前的一篇文章(“制作完美的 WordPress 主题”系列中)中,我提到了“插件领域”的经验法则

如果该功能与网站的视觉外观有关,则应位于主题中,但如果与网站的功能有关,则应在主题中应作为单独的插件包含在内。

很简单,对吧?

尽管人们仍然倾向于将功能位硬编码到他们的主题中,但主题目录(如 WordPress.org 和 ThemeForest)不接受侵入“插件领域”的主题。因此,提供带有主题的功能就成了一个问题。

幸运的是,有一个相当简单的解决方案,并且它不违反“插件领域”规则。

介绍 TGM 插件激活库

TGM Plugin Activation 是一个轻量级库,旨在将主题与插件捆绑在一起。这个想法很简单:当用户安装您的主题时,它会让用户安装来自 WordPress.org、外部网站或主题文件夹的插件。以下是该库的创建者 Thomas Griffin 对这个方便的小工具的定义:

TGM 插件激活 是一个 PHP 库,可让您轻松地为您的 WordPress 主题(和插件)请求或推荐插件。它允许您的用户使用本机 WordPress 类、函数和接口以单一或批量方式安装甚至自动激活插件。您可以引用预打包的插件、WordPress 插件存储库中的插件,甚至是互联网上其他地方托管的插件。

这可能是解决“插件领地入侵”问题的最明智的解决方案。而且申请也很容易。

A+响应式布局后台模板
A+响应式布局后台模板

A+是一个完全响应式,基于Bootstrap3.3.7最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,她提供了诸多的强大的可以重新组合的UI组件,并集成了最新的jQuery版本(v2.1.1),当然,也集成了很多功能强大,用途广泛的jQuery插件,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对

下载

我们来看看吧!

安装 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'      => 'buddypress',
		'required'  => false, // this plugin is recommended
	)
);

?>

从外部源请求插件

<?php

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

?>

从主题目录中获取插件

<?php

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

?>

配置 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' => get_stylesheet_directory() . '/lib/plugins/', // default absolute path
	'menu'         => 'mytheme-install-required-plugins', // menu slug
	'has_notices'  => true, // Show admin notices
	'dismissable'  => false, // the notices are NOT dismissable
	'dismiss_msg'  => 'I really, really need you to install these plugins, okay?', // this message will be output at top of nag
	'is_automatic' => true, // automatically activate plugins after installation
	'message'      => '<!--Hey there.-->', // message to output right before the plugins table
	'strings'      => array(); // The array of message strings that TGM Plugin Activation uses
);

?>

总结一切

正如您所看到的,通过 WordPress 主题提供功能并非不可能 - 您只需考虑用户从您的主题切换到另一个主题时的情况。 TGM 插件激活库提供了一种非常聪明的按书本操作的方法。

您觉得这个工具怎么样?您曾经使用过它,或者您打算将来使用它吗?请在下面发表评论,告诉我们您的想法。如果您喜欢这篇文章,请不要忘记与您的朋友分享!

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

16

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

23

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

75

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

95

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

218

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

420

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

168

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

222

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

33

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号