使用 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 字段并提供distsource 相对的信息(两者都可以提供)。

我过去所做的是将所有包放在内部服务器上,并使用反映相关元数据的命名约定,以便可以从 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 主题的主要内容,如果未能解决你的问题,请参考以下文章

yii2如何环境部署?yii2高级模版安装教程

如何安装 composer.phar

yii2高级模板安装

Yii高级模板的安装

compose环境变量怎么配置

如何安装redis和给wordpres加速?