You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下WordPress扩展WP-CLI自定义命令失败求助

在Docker环境中扩展WP-CLI自定义命令的解决方案

问题背景

你通过给定的docker-compose.yml配置部署了WordPress环境,WP-CLI可通过docker exec site-cli wp --info正常调用,但在开发插件中使用WP_CLI::add_command注册的自定义命令,执行时提示“命令未注册”。

解决步骤

1. 确保开发插件已激活

WP-CLI默认只会加载已激活的插件中的自定义命令,先在容器内激活你的插件:

docker exec site-cli wp plugin activate your-plugin-slug

执行以下命令验证插件状态:

docker exec site-cli wp plugin list

确认目标插件的status列显示为active。

2. 检查自定义命令的代码规范

确保你的命令代码符合WP-CLI的要求,示例写法如下(放在插件主文件或单独的命令文件中):

<?php
/**
 * Plugin Name: 自定义WP-CLI命令插件
 */

// 仅在WP-CLI环境下加载命令
if ( defined( 'WP_CLI' ) && WP_CLI ) {
    class My_Custom_CLI_Command {
        /**
         * 示例子命令:输出问候语
         *
         * @param array $args 位置参数
         * @param array $assoc_args 关联参数
         */
        public function greet( $args, $assoc_args ) {
            $name = isset( $args[0] ) ? $args[0] : 'Guest';
            WP_CLI::success( "Hello, {$name}!" );
        }
    }

    // 注册命令,主命令名为`my-cli`,对应上面的类
    WP_CLI::add_command( 'my-cli', 'My_Custom_CLI_Command' );
}

关键注意点:

  • 必须用defined('WP_CLI') && WP_CLI包裹代码,避免在Web环境下加载
  • 类名与WP_CLI::add_command的第二个参数必须完全匹配
  • 子命令对应类中的公共方法

3. 直接指定WP-CLI加载命令文件(可选,无需激活插件)

如果不想依赖插件激活状态,可通过wp-cli.yml强制WP-CLI加载命令文件:
在本地挂载的wordpress目录下创建wp-cli.yml文件(该目录对应容器内/var/www/html),内容如下:

require:
  - wp-content/plugins/your-plugin-slug/your-command-file.php

保存后,WP-CLI每次运行都会自动加载指定的命令文件。

4. 验证自定义命令

执行以下命令测试自定义命令:

docker exec site-cli wp my-cli greet
# 或带参数
docker exec site-cli wp my-cli greet "John"

如果输出成功提示,说明命令已正常注册。

内容的提问来源于stack exchange,提问作者SebastianOpperman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:55:20