拥有一个WordPress开发实例是在不中断WordPress在线版本的情况下更新、开发和修改网站的好方法。设置WordPress开发副本的方法有很多,但本文将涵盖基础知识、最佳实践、技巧以及一些使运行WordPress开发副本变得更容易的工具。
在计算机上安装WordPress
使用这些说明来设置用于测试和开发的本地服务器环境。
在本地安装WordPress通常是为了开发目的。有兴趣进行开发的人可以按照下面的说明在本地下载和安装WordPress。
– wp-env – 由WordPress核心开发者社区维护的免费开源开发环境。
– VVV 或 Varying Vagrant Vagrants – 由WordPress社区成员维护的免费开源本地开发环境。
– XAMPP – 由Apache Friends维护的免费开源本地开发环境
– MAMP – 免费的本地开发环境,包含在本地安装WordPress所需的一切。
– DDEV – 免费开源的开发环境。无缝地在公共域上共享本地站点,包括数据库编辑器、Xdebug和其他性能分析工具。
– Lando – 免费开源的开发环境,提供 插件以在本地安装WordPress。
– AMPPS – 带有内置Softaculous安装程序的免费WAMP/MAMP/LAMP堆栈。它还可以一键安装和升级WordPress等。
– Bitnami WordPress包 和 Bitnami WordPress Multisite包 – Bitnami提供的WordPress包,为您的本地计算机或云端提供WordPress或WordPress Multisite的一键安装解决方案。
– Instant WordPress – 适用于Windows的免费独立便携式WordPress开发环境,可从USB密钥运行。
– WordPress Studio – 免费开源的应用程序,可在本地安装和管理多个WordPress站点。
软件设备 – 即用型
您可能会发现使用预集成的 软件设备 是快速启动WordPress的好方法,特别是与虚拟机软件(例如VMWare、VirtualBox、Xen HVM、KVM)结合使用时。
Parallels是另一种可用的软件。与虚拟机软件不同,它需要付费。它允许您在同一台机器上同时运行Mac和Windows。
软件设备允许用户跳过手动安装WordPress及其依赖项,而是部署一个自包含的系统,只需几分钟即可进行很少或无需设置。
- TurnKey WordPress Appliance:一个免费的基于Debian的设备,开箱即用。它捆绑了一系列流行的WordPress插件,具有小巧的占用空间、自动安全更新、SSL支持和Web管理界面。提供ISO格式、虚拟机镜像或在云中启动。
在Ubuntu Server 16.04 LTS上无人值守/自动化安装WordPress
使用一个数据库的两个WordPress安装
注意:如果您计划进行数据库开发,则不建议使用此方法。
运行本地副本的一种流行方法是使用相同的本地和在线数据库。使用相同的数据库将允许您在本地副本上进行工作,并将更改从本地推送到生产环境,而不会中断正常运行时间。
本地副本的设置
一旦您设置了本地文件,就必须修改本地安装根目录中的wp-config.php。
define('WP_HOME', "https://{$_SERVER['HTTP_HOST']}");
define('WP_SITEURL', "https://{$_SERVER['HTTP_HOST']}");
ob_start( 'ob_replace_home_url' );
function ob_replace_home_url( $content ) {
$home_urls = array(
'https://site.testing.example.com',
'https://site.example.com',
'https://site.authoring.testing.example.com',
'https://site.authoring.example.com',
);
$content = str_replace( $home_urls, WP_HOME, $content );
return $content;
}
使用Drop-In
如果我们不想修改核心代码怎么办?避免更改核心代码是一种良好的做法,便于升级和代码共享。甚至有一个过滤器可以做到这一点 (pre_option_siteurl 和 pre_option_home),但存在一个问题:在 wp-settings.php 中,
- 过滤器直到第65行之后
functions.php被包含时才能定义 - WordPress在第155行调用
get_option(通过wp_plugin_directory_constants()) - 插件直到后面大约第194行才定义。
然而,在第65行和第155行之间,我们可以利用一些东西,即加载drop-in db.php;过滤器可以安全地在那里定义。(不过,这可能只是向“非核心”代码迈进了一半。)尝试此技术之前,请检查是否已存在 wp-content/db.php。像W3 Total Cache这样的插件出于类似原因也使用它。
<?php
// 将此粘贴到 (新) 文件 wp-content/db.php 中
add_filter ( 'pre_option_home', 'test_localhosts' );
add_filter ( 'pre_option_siteurl', 'test_localhosts' );
function test_localhosts( ) {
if (... 与之前相同的逻辑来判断是否在开发站点 ...) {
return "https://my.example.com/dev";
}
else return false; // 按正常方式操作;将从数据库拉取主站点信息
}