使用Composer安装高级Wordpress主题

时间:2015-12-15 17:10:30

标签: wordpress composer-php

我在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"
            }
        }
    }
]

非常好,但后来我要自己维护版本号(我无法下载旧版本)而且我不太喜欢网址中的许可证密钥。但好吧,我已经尝试但我需要登录Themeforest,否则下载链接(类似http://themeforest.net/user/username/download_purchase/some-random-id?accessor=wordpress_theme)将无效。我可以尝试跟踪下载链接但是Envato recommends against download manager,所以我不认为这是允许的或者去的方式。我过去曾联系过Envato,因为他们建议在教程网站Tutsplus上使用Composer,但他们不支持在那里的市场网站上。从来没有得到答复。

另一种方法是为Avada创建我自己的GIT存储库。没问题,所以我创建了它,用我自己的composer.json文件添加了所有文件:

{
    "name": "username/wordpress-avada-theme",
    "type": "wordpress-theme"
}

非常简单,在版本中添加了GIT标签,可以安装。非常好!但是......我要自己维护这个,如果Avada发布新版本我要删除我的Avada仓库中的所有文件,添加带有新版本号标签的新文件然后我可以安装新版本作曲家。

另一个问题:插件,Avada附带了一些需要安装的插件:

  • Fusion Core
  • Layerslider
  • 革命滑块

所以我需要另外3个存储库,如果出现新版本,我将全部维护它们。所以我联系了主题的创建者Theme Fusion。我不认为它们不适用于版本控制而且确实如此,它们使用GIT,但由于Envato的条件,它们不允许我访问。

我还有其他选择吗?我现在只使用Composer for Wordpress本身和所有免费插件,但我也想用它作为我的“高级”东西。作曲家应该让事情变得更容易,但是当我要维护那些回购时,事实并非如此。所以现在我已经把Avada和它的插件放在了项目回购中,但感觉并不好。

编辑:与此同时,我在Envato API中发现了一些可以实现这一目标的有趣内容,请参阅我的issue on the wpackagist repository,它是Wordpress插件和主题目录的Composer镜像。

4 个答案:

答案 0 :(得分:1)

SatisPress是您要寻找的。这个工具可以让您

将已安装的WordPress插件和主题公开为Composer软件包。

设置和使用非常容易:

  1. 设置WordPress实例(例如packages.example.com
  2. 安装并激活SatisPress
  3. 安装并激活高级/付费软件包(插件/主题)
  4. 提供许可证凭据以启用自动更新
  5. 添加访问令牌
  6. 将存储库和凭据添加到您的composer.json / auth.json(或Private Packagist镜像)
  7. 需要这样的高级软件包:$ composer require satispress/my-private-plugin

有关更多详细信息,请参阅文档:https://github.com/cedaro/satispress/blob/develop/docs/index.md

注意:我不隶属于SatisPress或Private Packagist。

答案 1 :(得分:1)

我正在为此提供更好的解决方案。 Sign up here.

尽管它目前无法处理嵌套的依赖项(您的Fusion Slider,Fusion Builder等),但它允许您通过Composer管理Avada(或其他Envato购买的产品)并正确使用版本约束:

composer require theme-fusion/avada

或类似的东西。

尽管Avada专门解决了此问题,因为它们的补丁程序更新不在正常的WordPress更新范围内应用。不用说了。

答案 2 :(得分:0)

我经常看到人们将购买的内容置于源代码控制之下,因此在引入新版本时可以对其进行代码审查。但是,我相信私有软件包的常见做法是使用私有存储库。

私有软件包中包含composer.json个文件时,有几种选择。不幸的是,使用WordPress通常并非如此。您可以将packages.json文件放在网络服务器上,以将该URL用作作曲者存储库。

在作曲家源代码中的test fixture可以用作该文件中预期内容的示例。我倾向于忽略version_normalized字段,并提供与dist相反的source信息(均可提供)。

我过去所做的就是将所有软件包放在具有反映相关元数据的命名约定的内部服务器上,以便可以从bash脚本轻松生成composer存储库。

类似/archives/{package-type}/{vendor}/{name}_{version}.zip

答案 3 :(得分:-1)

现在,您可以使用此Composer插件安装从Envato购买的安装主题和插件。 https://packagist.org/packages/szepeviktor/composer-envato

composer require envato/avada

您需要全局安装composer-envato! 有关配置,请参见README