我在Themeforest:Avada上买了一个"高级"主题。我想用Composer安装这个主题,因为它是一个依赖项(我使用Bedrock作为基础)。因此,我看到了这篇文章,他们建议制作一个带有下载链接的自定义包(例如,有一些自己的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中的许可证密钥。但好吧,我已经试过了,但我需要先登录Theme,否则下载链接(类似http://themeforest.net/user/username/download_purchase/some-random-id?accessor=wordpress_theme
的东西)将不起作用。我可以尝试追踪下载链接,但Envato建议不要使用下载管理器,所以我认为这是不允许的,也不应该这样做。我过去曾联系过Envato,因为他们建议在Tusplus教程网站上使用Composer,但他们在市场网站上不支持这一点。一直没有得到回复。
另一种方法是为Avada创建我自己的GIT存储库。没问题,所以我创建了它,用我自己的composer.json
文件添加了所有文件:
{
"name": "username/wordpress-avada-theme",
"type": "wordpress-theme"
}
很简单,在版本中添加了一个GIT标记,就可以安装了。非常好!但是我必须自己维护,如果Avada发布了新版本,我必须从我的Avada存储库中删除所有文件,添加带有新版本号标签的新文件,然后我可以用Composer安装新版本。
另一个问题:插件,Avada附带了一些需要安装的插件:
- Fusion Core
- Layerslider
- 旋转滑块
所以我还需要3个存储库,如果有新版本出现,我必须对它们进行维护。所以我联系了主题融合,主题的创造者。我不认为他们不能使用版本控制,这是真的,他们使用GIT,但由于Envato的条件,他们不允许我访问。
我还有什么其他选择?我现在只是在Wordpress本身和所有免费插件中使用Composer,但我也想把它用于我的"高级"东西。作曲家应该让事情变得更容易,但当我必须维护这些回购时,事实并非如此。所以现在我已经把Avada和它的插件放在了项目回购中,但感觉不太好。
编辑:同时,我在Envato API中发现了一些有趣的东西,可以实现这一点,请参阅我在wpackagist存储库上的问题,它是Wordpress插件和主题目录的Composer镜像。
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。
我正在测试一个更好的解决方案。在这里注册。
虽然它目前不会处理嵌套的依赖项(Fusion Slider、Fusion Builder等),但它将允许您通过Composer管理Avada(或其他Envato购买),并正确使用版本约束:
composer require theme-fusion/avada
或者类似的东西。
尽管Avada特别搞砸了这一点,因为他们的补丁更新超出了正常WordPress更新的范围。更不用说这些了。
我经常看到人们将购买的内容置于源代码管理之下,以便在引入新版本时对其进行代码审查。然而,我认为私有包的常见做法是使用私有存储库。
当私有包中包含composer.json
文件时,有一些选项。不幸的是,WordPress通常不是这样。您可以将packages.json
文件放在Web服务器上,将该URL用作composer存储库。
composer源中的测试夹具可以用作该文件中预期内容的示例。我倾向于省略version_normalized
字段,并提供与source
相反的dist
信息(两者都可以提供)。
我过去所做的是将所有包放置在一个内部服务器上,该服务器具有反映相关元数据的命名约定,因此可以从bash脚本轻松生成composer存储库。
类似/archives/{package-type}/{vendor}/{name}_{version}.zip
的东西
现在您可以使用此Composer插件安装从Envato购买的主题和插件https://packagist.org/packages/szepeviktor/composer-envato
composer require envato/avada
您需要在全局范围内安装composer-envato
!有关配置,请参阅自述文件。