使用Git、Composer、Sublime Text进行WordPress定制开发

0

建立WordPress新项目的流程

当你要开始建立一个WordPress的新项目,你会怎么做呢?

以前的我大概会这样做:

  1. 到cn.wordpress.org下载最新的WordPress简体中文版本,Rock!
  2. 解开WP压缩档,放进htdocs(apache的本机web目录)再rename成”新项目名称”
  3. 到localhost/phpmyadmin建立一个空的资料库
  4. 到localhost/新项目名称,开始安装WordPress
  5. 把需要用到的themes和plugins一并装进WordPress里
  6. 开启sublime text建立新项目,开工!

这种流程,来自于我一直以来的心智模型:习惯将WordPress视为项目的本体或主体,先将WordPress搞定,再来搞定定制的工作。

嗯,好像有点麻烦,也有点费时。主要是操作上述过程常常需要切换很多窗口,并且若发现需要的themes/plugins有新版本,在下载及管理上常常会有点混乱 (也许是个人的习惯不佳XD)。

将WordPress视为套件,而不是项目主体

先大概描述一下新的心智模型是这样的:先建立项目的架构(skeleton),预先决定好你要使用的套件有哪些(包含指定版本),再一并将套件下载或更新至项目里,跟过去流程最大的不同是将WordPress也视为一个附挂在你项目上的套件。

实际使用的新流程大部份动作在终端机(console)完成,速度上快很多,重点是后续管理上也更为简洁单纯。步骤如下:

  1. 于htdocs执行:git clone https://github.com/mrmu/wp-skeleton-zhtw.git 新项目名称
  2. 建立资料库:
    • mysql -u root;
    • create database 新项目名称;
    • quit;
  3. 于项目目录内:subl composer.json;再于sublime text内 myjs-composer (snippet),存档离开
  4. composer install
  5. subl 新项目名称 (储存为sublime text项目),修改wp-config.php内的资料库资讯及WP_CONTENT_URL设定,存档离开
  6. 到localhost/新项目名称,开始安装WordPress
  7. 装完切换到sublime text,开工!

要补充说明的是第1步会clone我在github上的一个wp-skeleton-zhtw的code,实际上它是fork自别人的wordpress skeleton范例,我只是中文化再加上一些提示。

WordPress Skeleton

通常我们在开发WP网站,大部份的客制成果都储存在wp-content里,包含语言(languages)、插件(plugins)、主题(themes)及附件上传(uploads),所以 wp-content 里的内容其实才是我们项目的主体,而将WordPress核心视为套件也很合理。
所以理想的状况大概是这样,将wp-content目录拉出WP核心,WP核心会去参考外层目录那个我们额外建立的wp-content,而非里头的wp-content,目录的情况大概会是:

  • 项目目录/
    • wp/ (从cn.wordpress.org下载解开的WordPress核心档案,什么设定都不需改变)
    • wp-content/ (自建的外层wp-content目录,此后开发档案都放这里)
    • wp-config.php (资料库设定、WP_CONTENT目录设定,利用它让WP核心读取外层的wp-content/)
    • index.php (一样需要一个负责载入wp-blog-header.php的index档)

这种架构方式已经有人做出来了,就是所谓的WordPress Skeleton,针对简体中文语言,我也fork了一份改写成zh版。Skeleton不太会去更动,毕竟它就是一个简单的项目初始架构,而且项目目录进入git控制,也可以将wp目录设至.gitignore,版本控管就可以略过WP核心了。
接下来的重头戏是composer。

使用Composer来管理WordPress项目

composer是php管理相依套件的工具,我们可以利用composer预先设定好我们要抓的WordPress是什么版本,相依于PHP什么版本、再指定好要装的Plugins和Themes有哪些,然后再透过一个指令 composer install,一并将它们安装至项目里。

如果你还不能在任意目录执行mysql和subl,可以各别建立一个执行连结放在usr/local/bin,以我自己本机的环境为例:
sudo ln -s “/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl” /usr/local/bin/subl
sudo ln -s “/Applications/XAMPP/bin/mysql” /usr/local/bin/mysql

以下是供你参考的composer.json档案内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
  "repositories": [
    {
      "type": "composer",
      "url": "http://wpackagist.org"
    },
    {
      "type": "package",
      "package": {
        "name": "wordpress",
        "type": "webroot",
        "version": "3.8.1",
        "dist": {
          "type": "zip",
          "url": "https://github.com/WordPress/WordPress/archive/3.8.1.zip"
        },
        "require": {
          "fancyguy/webroot-installer": "1.0.0"
        }
      }
    }
  ],
  "require": {
    "php": ">=5.3.0",
    "wordpress": "3.8.1",
    "fancyguy/webroot-installer": "1.0.0",
    "wpackagist/redux-framework": "*",
    "wpackagist/advanced-custom-fields": "*",
    "wpackagist/posts-to-posts": "1.4.x"
  },
  "extra": {
    "webroot-dir": "wp",
    "webroot-package": "wordpress"
  }
}

wordpress_0

完成后的目录架构如图,可以看到wp目录里放的是预设的WP版本,里面没有wp-config.php,而wp-content目录里的档案也没有被用到。

wordpress_1

wordpress_2

参考资源

关于composer在wordpress中的使用可以参考这篇:http://roots.io/using-composer-with-wordpress/ ,上述composer.json设定也是来自这篇的说明。

经由我目前粗浅的了解来稍微简单的说明一下:wpackagist.org是一个composer套件的管理平台,上头有很多可供安装的套件库(repositories),每个套件库各自都有定义composer.json内容(就类似上述wordpress套件的描述)。

原本只要写require的描述就ok,但wpackagist.org没有wordpress的套件,所以我们要自行写repositories的描述。又因为通常更新下来的套件会放进vender目录,我们希望WordPress可以放进wp目录,因此还要装一个fancyguy/webroot-installer的套件,再指定extra的描述,让下载下来的wordpress存进wp目录。

翻译自MRMU,朽木整编

发表评论

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 必填字段 *

为何看不到我发布的评论?

正在提交, 请稍候...