使用 Composer 安装高级 Wordpress 主题
Posted
技术标签:
【中文标题】使用 Composer 安装高级 Wordpress 主题【英文标题】:Install premium Wordpress theme with Composer 【发布时间】:2016-03-21 14:28:50 【问题描述】:我在Themeforest:Avada 上购买了“高级”主题。我想用Composer 安装这个主题,因为它是一个依赖项(我使用Bedrock 作为基础)。所以我遇到了this article,他们建议使用下载链接制作一个自定义包(例如一些自己的 Wordpress 插件 WP Migrate DB Pro):
"require":
"deliciousbrains/wp-migrate-db-pro": "*"
,
"repositories": [
"type": "package",
"package":
"name": "deliciousbrains/wp-migrate-db-pro",
"type": "wordpress-plugin",
"version": "1.5",
"dist":
"type": "zip",
"url": "https://deliciousbrains.com/dl/wp-migrate-db-pro-latest.zip?licence_key=<LICENSE_KEY>&site_url=composer-test.dev"
,
"require":
"composer/installers": "v1.0.7"
]
非常好,但是我必须自己维护版本号(我不能下载旧版本)而且我不太喜欢 url 中的许可证密钥。但是好吧,我已经尝试过了,但我需要在 Themeforest 上登录,否则下载链接(类似于 http://themeforest.net/user/username/download_purchase/some-random-id?accessor=wordpress_theme
)将不起作用。我可以尝试跟踪下载链接,但 Envato recommends against download manager,所以我不认为这是允许的或要走的路。我过去曾联系过 Envato,因为他们建议在教程站点 Tutsplus 上使用 Composer,但他们不支持在市场站点上使用 Composer。从未收到回复。
另一种方法是为 Avada 创建我自己的 GIT 存储库。没问题,所以我创建了它,用我自己的composer.json
文件添加了所有文件:
"name": "username/wordpress-avada-theme",
"type": "wordpress-theme"
很简单,在版本号后面加了一个git标签就可以安装了。很不错!但是......我必须自己维护它,如果 Avada 发布新版本,我必须从我的 Avada 存储库中删除所有文件,添加带有新版本号标签的新文件,然后我可以安装新版本作曲家。
另一个问题:插件,Avada自带一些插件需要安装:
融合核心 图层滑块 旋转滑块所以我需要另外 3 个存储库,如果有新版本出现,我必须维护它们。所以我联系了主题的创建者Theme Fusion。我不认为他们不能使用版本控制,这是真的,他们使用 GIT,但由于 Envato 的条件,他们不允许给我访问权限。
我还有什么其他选择?我现在只是将 Composer 用于 Wordpress 本身和所有免费插件,但我也想将它用于我的“高级”内容。 Composer 应该让事情变得更容易,但是当我必须维护这些 repo 时,情况并非如此。所以现在我已经把 Avada 和它的插件放在项目 repo 中,但感觉不太好。
编辑:同时,我在 Envato API 中发现了一些有趣的东西,可以使这成为可能,请参阅我的 issue on the wpackagist repository,它是 Wordpress 插件和主题目录的 Composer 镜像。 p>
【问题讨论】:
老实说,我认为您不会找到解决方案。由于我也经常使用主题森林主题(顺便说一下,确实与 Avada 合作过,这是一个糟糕的主题),我从来没有想出一个正确处理版本控制的解决方案。如果有人对此有解决方案,我会很感兴趣。虽然对于插件,如果我没记错的话,Avada 在主题文件夹中附带了这些插件,所以如果你更新主题,插件也会更新。 我也不认为,但我还没有在 Stack Overflow 上尝试过,所以特此声明。 Avada 附带的插件(以及大多数其他“高级”主题)只是一个目录中的.zip
存档,需要像所有其他插件一样安装。
【参考方案1】:
SatisPress 是您正在寻找的。这是一个工具,可以让你
将已安装的 WordPress 插件和主题公开为 Composer 包。
设置和使用非常简单:
-
设置 WordPress 实例(例如
packages.example.com
)
安装并激活 SatisPress
安装和激活高级/付费包(插件/主题)
提供许可证凭据以启用自动更新
添加访问令牌
将存储库和凭据添加到您的 composer.json
/auth.json
(或 Private Packagist 镜像)
需要像这样的高级包:$ composer require satispress/my-private-plugin
更多详情请参阅文档:https://github.com/cedaro/satispress/blob/develop/docs/index.md
注意:我不隶属于 SatisPress 或 Private Packagist。
【讨论】:
【参考方案2】:我正在测试一个更好的解决方案。 Sign up here.
虽然它目前无法处理嵌套依赖项(您的 Fusion Slider、Fusion Builder 等),但它允许您通过 Composer 管理 Avada(或其他 Envato 购买)并正确使用版本约束:
composer require theme-fusion/avada
或类似的东西。
虽然 Avada 专门搞砸了这一点,因为他们的补丁更新应用在正常 WordPress 更新范围之外。那就更不用说了。
【讨论】:
我可以为您编写一个小型 MU 插件来禁用 Avada 中的内置更新吗?【参考方案3】:我经常看到人们将购买的内容置于源代码控制之下,以便在引入新版本时对其进行代码审查。但是,我认为私有包的常见做法是使用私有存储库。
当私有包中有composer.json
文件时,有一些选项。不幸的是,对于 WordPress,情况往往并非如此。您可以将packages.json
文件放在网络服务器上,以将该 URL 用作作曲家存储库。
作曲家源代码中的test fixture 可以用作该文件中预期内容的示例。我倾向于省略version_normalized
字段并提供dist
与source
相对的信息(两者都可以提供)。
我过去所做的是将所有包放在内部服务器上,并使用反映相关元数据的命名约定,以便可以从 bash 脚本轻松生成作曲家存储库。
类似/archives/package-type/vendor/name_version.zip
【讨论】:
【参考方案4】:现在您可以使用此 Composer 插件安装从 Envato 购买的安装主题和插件 https://packagist.org/packages/szepeviktor/composer-envato
composer require envato/avada
你需要全局安装composer-envato
!
配置见README。
【讨论】:
不推荐这样做,因为它总是下载最新版本,没有任何东西可以被锁定。它也不适用于与主题捆绑的插件。在 Envato 让我们下载旧版本之前,SatisPress 是最简单的方法。 你说得对,罗伊。我将在 README 中添加此信息。以上是关于使用 Composer 安装高级 Wordpress 主题的主要内容,如果未能解决你的问题,请参考以下文章