
WPML for WooCommerce 5.5.2.2 —— 针对 WooCommerce 10.3 的关键修复
即将发布的 WooCommerce 10.3 版本中存在一个严重的兼容性问题,会导致产品变体价格计算错误。为避免您的站点出现问题,请在更新至 WooCommerce 10.3 之前,将 WPML Multilingual & Multicurrency for WooCommerce 更新至 5.5.2.2 版本。
借助 Docker Compose、Xdebug 和 PhpStorm,您可以创建一个可重现、隔离且易于管理的本地开发环境。该环境与生产服务器一致,有助于提高 WordPress 项目的质量。
各位 WordPress 开发者和高级用户,大家好!今天,我很高兴与大家分享一篇全面而简单的教程,介绍如何使用 Docker Compose 设置本地 WordPress 开发环境。最近加入 OnTheGoSystems 充满活力的团队后,我决定把我的舒适区也带过来,这就是这套设置的由来。
目标很简单:开发一套设置,让我能对开发工具进行细粒度控制,将 Xdebug 和 WP-CLI 与官方 WordPress Docker 镜像集成。这套设置并不是要重新发明轮子,而是要对其进行定制,以符合个人偏好和工作风格。我希望本指南能帮助您配置类似的环境,从而提升您的 WordPress 开发之旅。
要充分利用本教程,您需要安装以下依赖项:
我们的目标是建立一个隔离、可重现且易于管理的本地 WordPress 开发环境。Docker 构成了此设置的骨干,提供了包含和管理应用程序的基础设施。Xdebug 和 PhpStorm 是这一拼图的补充部分,提供了增强的 PHP 代码开发和调试功能。
我们的旅程将从制作一个扩展官方 WordPress Docker 镜像的 Dockerfile 开始。我们将通过整合 Xdebug 和 WP-CLI 来增强此镜像,这些工具在我们的 WordPress 开发和调试任务中起着重要作用。
接下来,我们将起草一个 Docker Compose 文件来编排两个关键服务:WordPress 和 MySQL。信不信由您,基本上就是这样!
这种设置的妙处在于,它产生了一个本地开发环境,不仅与生产服务器一致,而且很容易复制。这意味着我们可以轻松地在多个环境或机器上复制完全相同的设置,确保一致性并减少与设置相关的问题。
我们的旅程从创建一个新的 Dockerfile 开始。该文件指示 Docker 如何构建我们的镜像。以下是我通常开始的基本设置:
# Use the official WordPress image as a parent image
FROM wordpress:latest
# Install Xdebug
RUN pecl install xdebug
# Install WP-CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
chmod +x wp-cli.phar && \
mv wp-cli.phar /usr/local/bin/wp
# Copy xdebug.ini into the container
COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
在此 Dockerfile 中,我们从官方 WordPress 镜像开始。然后,我们分别安装 Xdebug 和 WP-CLI,以提高清晰度和可维护性。Xdebug 配置文件(xdebug.ini)被复制到容器中的相应目录。这构成了我本地 WordPress 开发环境首选设置的基础。
现在我们已经在 Docker 镜像中安装了 Xdebug,我们需要对其进行配置,使其在我们的本地开发环境中工作。这涉及创建一个具有以下设置的 xdebug.ini 文件:
ini zend_extension=xdebug xdebug.mode=debug xdebug.client_port=9003 xdebug.start_with_request=yes
这些设置启用了 Xdebug 扩展,将其设置为在每次请求时开始调试,并定义了它应连接的客户端端口(在本例中为 9003)。您可能已经注意到我们还没有指定 client_host,但不用担心,它很快就会在我们的设置过程中发挥作用。
接下来,我们将创建一个 docker-compose.yml 文件,用于设置我们的 WordPress 和 MySQL 服务:
yaml
version: '3'
services:
# MySQL Service
mysql:
image: mysql:latest
container_name: mysql_container
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
# WordPress Service
wordpress:
depends_on:
- mysql
image: wordpress:latest
container_name: wp_container
volumes:
- ./wp_data:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DEBUG: 1
XDEBUG_CONFIG: client_host=host.docker.internal
ports:
- "8000:8000"
volumes:
db_data:
在此文件中,我们定义了两个服务:MySQL 和 WordPress。这两个服务都具有唯一的容器名称,以便于参考和管理。
restart: always 指令可确保服务在意外停止时始终重新启动。如果手动停止,则仅在手动重启容器时才会重新启动。
MySQL 服务挂载了一个 Docker 卷(db_data),即使容器被删除也能确保持久存储。对于 WordPress 服务,我们将本地目录(./wp_data)挂载到容器中。这意味着我们本地系统上 WordPress 文件的任何更改都会反映在容器中。
我们为 WordPress 服务添加了两个额外的环境变量:WORDPRESS_DEBUG 用于启用 WordPress 调试,XDEBUG_CONFIG 用于指定 Xdebug 的客户端主机。client_host 设置为 host.docker.internal,这是一个特殊的 DNS 名称,可路由到主机的内部 IP 地址,从而允许 Xdebug 与主机上的 IDE 进行通信。
请注意,client_host 设置是为 Windows 和 macOS 量身定制的。对于 Linux,一种常见的替代方法是将 host.docker.internal 替换为您机器的实际 IP 地址,可以通过终端命令 ip addr show 获取该地址。
准备好 Dockerfile、Xdebug 配置文件和 Docker Compose 文件后,就可以启动您的本地 WordPress 开发环境了。
为此,只需在终端中导航到包含 Docker Compose 文件的目录,然后运行以下命令:
bash docker-compose up -d
此命令将指示 Docker 在后台启动您的服务。
成功执行后,您将在本地机器上运行一个 WordPress 网站,可以通过 http://localhost:8000 访问。您对 WordPress PHP 文件所做的任何更改现在都会反映在此网站上,提供了一种简单有效的方法来开发和调试 WordPress 应用程序。
此外,您的 MySQL 服务也将启动并运行,可通过端口 3306 访问。这为您的 WordPress 应用程序提供了一个功能齐全的 MySQL 数据库,为您的开发需求复制了真实的运行环境。
对于那些想要更深入地了解其 PHP 配置的人,我们可以将 phpinfo.php 文件引入到我们的 Docker 镜像中。访问此文件时,它将全面概述您的 PHP 设置。
要添加 phpinfo.php 文件,您首先需要在与 Dockerfile 相同的目录中创建它。该文件应包含以下 PHP 代码:
<?php phpinfo(); ?>
接下来,将以下行添加到您的 Dockerfile 中:
# Bonus: Copy phpinfo.php into the container COPY phpinfo.php /var/www/html/phpinfo.php
此命令会将 phpinfo.php 文件复制到 Docker 镜像内的 WordPress 根目录中。
为确保这些更改生效,您需要重新构建 Docker 镜像并重启 Docker Compose 服务。在终端中运行以下命令:
bash docker-compose down docker-compose up -d --build
docker-compose down 命令会停止并删除当前的 Docker 容器。随后,docker-compose up -d –build 会使用新添加的 phpinfo.php 文件重新构建 Docker 镜像,并在后台重启 WordPress 和 MySQL 服务。
现在,您可以在 Web 浏览器中导航到 http://localhost:8000/phpinfo.php 来访问 phpinfo.php 文件。在这里,您将看到一个概述 PHP 配置的详细页面,这可能是调试和验证的宝贵资源。
现在您已经使用 Docker、Xdebug 和 PhpStorm 设置了本地 WordPress 开发环境,您可以开始调试您的 WordPress 网站了。以下是快速入门指南:
在结束本教程之际,我希望它能像在我自己的旅程中一样,成为您的宝贵资源。自定义此设置的能力(就像我们通过添加 phpinfo.php 文件所做的那样)开启了无数的可能性,使我们的开发过程更加稳健和高效。所有代码都可以在此 GitHub 存储库中找到。请毫不犹豫地拉取、尝试并提出改进建议!
我个人使用的是 Ubuntu OS,但这种设置的妙处在于,由于有了 Docker,使用什么操作系统都无关紧要!因为 Docker 可以在任何操作系统上同等运行,无论您喜欢 macOS、Windows 还是 Linux,设置和使用都是一样的!
感谢您陪伴我完成本教程。我希望能听到您的经验,或者您对进一步改进此设置的任何建议。请记住,成长源于知识共享和协作精神。
祝您编码愉快,让我们一起继续创造令人惊叹的 WordPress 体验吧!