WordPress多站点实践与理解


前言

网站需要做成中英双语版,原计划用TranslatePress这样的插件,试下来不太理想,所以想到了用wordpress多站点功能。中间走了一些弯路,不过因此也对wordpress的后台结构有了更深理解,记录备忘。


一、结论:wordpress多站点实现是极其容易的

事后看,我所遇到的困扰其实是因为把TranslatePress这样的插件和多站点(MultiSite)混在了一起,导致各种奇怪的问题。所以如果你也象我一样,尝试过用TranslatePress这样的插件,但又想转到多站点解决方法,要做的第一件事就是把这样的插件停用。

如果WordPress是安装在web的根目录(以Apach为例,是/var/www/html下), 实现多站点功能只需要6步:

  1. 先停用所有的插件

  2. 编辑wp-config.php 配置文件
    找到 /* Add any custom values between this line and the “stop editing” line. /,初始时它与 / That’s all, stop editing! Happy publishing. */ 之间是空白的, 在两者之间加入这一段:
    define( ‘WP_ALLOW_MULTISITE’, true );
    如下图所示:在这里插入图片描述

  3. 重新登录wordpress 管理台,确认配置
    重新登录wordpress, 在"Tools"下会发现多了一个"Network Setup", 点开,填入Network Title和email, 点"Install"
    在这里插入图片描述
    因为是测试,并没有域名,用的是IP 地址,所以只能用"目录"方式做多站点,不能用”子域"方式,不过确实是想用目录方式,所以正好。
    关于"Network"后续解释,这里填的以后也可以有机会改。
    然后wordpress 会提示需要修改配置文件,并且给出了修改的方法,如下图(不同的配置给出的方案是不一样的,要看你的服务器配置):
    在这里插入图片描述

  4. 再次修改wp-config.php配置文件,以及修改.htaccess文件
    按wordpress给出的建议,在服务器上修改wp-config.php和.htaccess文件.
    注意wp-config.php修改时,要保留之前加的那行define( ‘WP_ALLOW_MULTISITE’, true ); 新加的放在这行后面就行了。

  5. 登录登录wordpress 管理台,添加新站点
    修改好配置文件以后,重新登录wordpress, 会发现顶部多了一个MySites
    下面有个"Network Admin"子项,点开,选择"Sites"就可以添加新站点了。
    如下图(忽略下面的3个,初次加的时候,只有原始的主站点):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    因为是以目录方式做多站点,所以访问此新站点的方式是在主站点的后面加一个识别符, 比如说我的主站点是www.waleytest.com, 这是英文版的,中文版的用www.waleytest.com/zh/ , 那么Site Address (URL) 这里就填zh

  6. 配置新站点
    上面加的站点,还不能用,要做进一步配置。分三步:
    (1) 管理Network 主题、插件
    启用多站点后,所有的这些站点组成了一个"Network", 共享wordpress的基本配置(后面会讲到,wordpress并没有为每个站点在服务器web主目录下开一个folder, 这些信息都存在database里),各个站点不能自己下载主题和插件,需要network管理员(超级管理员)统一下载。下载后点network enable.
    这些在Network Admin里维护。
    在这里插入图片描述
    Settings里可以设定network的title , 以及一些新站点的默认配置,需要的话可以一并设置。
    (2) 对新站点做基础设置
    回到Network Admin 下的Sites下,将光标放在要配置的站点上,会出现菜单项,选择Edit
    在这里插入图片描述
    可以看到有4个Tab, 其中最重要的是"Settings".
    创建时设定的Site Title对应于"blogname", 想改的话在这里改掉就行了。
    在这里插入图片描述
    siteurl / home , 以及Info 页的Site Address 建议保持一致不要改。如果wordpress不是安装在web服务的根目录下,这三个会有一些区别。
    最重要的是,按需要改permalink_structure的格式, 通常对于静态网页来说, /%postname%/ 比较合适。
    在这里插入图片描述
    其它设置,如果懂是起什么作用的,可以也改成需要的。最后拉到最下方点"Save Changes"
    (3) 配置创建站点细节
    做完以上,就可以去配置网站本身了。比如说,新的站点是www.waleytest.com/zh, 那么就登录www.waleytest.com/zh/wp-admin/ 来管理这个网站。
    当然光标指向My Sites时,下面会出现这些站点,不用自己输入。要注意的是,不能点"visit", 因为这时站点还没有内容,要点"dashboard", 注意屏幕左下角的url就明白了。
    在这里插入图片描述

这之后,这跟创建普通的wordpress 网站就完全没有区别了。
如果一定说有区别,那就是只能启用不能自由下载主题和插件

二、wordpress多站点的实现细节

1.子站点在服务器上的文件目录

通常,类似http://www.waleytest.com/zh/about-me/ 这样的url,意味着在web服务器里,有zh这个目录。比如说,安装wordpress时的命令http://ip/wp-admin/install.php, 是因为在web服务的目录下,有wp-admin这个目录,这个目录下有install.php这个文件。
但是对于wordpress 多站点来说,在服务器上是没有为子站点创建目录的。
在这里插入图片描述
仔细想一下,这也不奇怪。因为对于主站来说(或者说不启用多站点的网站),wordpress也并没有在目录下添加什么文件, 所有的信息都存在数据库里。对于多站点,当然也是如此。

上面的表述其实不完全准确,wordpress确实为多站点创建了一些目录,用于存储用户上传的图片视频(media)这些文件。同样,这点与单站点的情形是类似的。单站点时,媒体文件存在 wp-content/uploads/这个目录下。wordpress会按上传的时间,创建年、月目录来存放文件。对于多站点,wordpress会在uploads下创建一个sites目录,在下面再为每个新加的站点创建一个目录,目录名是新站点的编号。然后在这个目录下,处理方式就跟主站点一样了,也是分年、月来管理。
如下图, 我有1个主站4个新加的站点。
在这里插入图片描述
除了媒体文件,wordpress其它文件都是统一的,这也是为什么多站点模式比单独安装省空间的原因。

主题在 wp-content/themes目录里;插件在wp-content/plugins 目录里。
在这里插入图片描述
在这里插入图片描述

2.多站点在wordpress数据库里的结构

(1) 数据表
可以看出,每新增一个站点,wordpress都会为它新增10张表。
在这里插入图片描述
其中*_post 表是最核心的,所有的网页数据都在这张表里。
在这里插入图片描述
网页内容保存在post_content字段, 字段ID是postid及pageid。Post type值是page, 代表是页面。Post title 就是页面标题。
如果在wordpress前台编辑器中用code editor查看网页,会发现与post_content字段的内容是完全一致的。
自定义的template也存在这张表, post type是“wp_template”;post title就是template的名称。
配置网站时,并不会改动安装在服务器目录里的主题、插件。所有的改动也存在*_post这张表。Post type = “wp_template_part”, post_name = “main-header”, post_title = “Main Header”

三、用多站点实现多语言版网站

用TranslatePress之类的插件,好处是会一个多语言控件。用多站点的方法,要曲折一点点,我用的方法是在MainHead上加一个跳转链接。
如果有更多语言,可以用submenu来实现。
在某种语言的版面上,加其它语言的跳转即可。

四、一些有用的参考资料链接

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值