使用CLI,但内部缺少我的命名空间类

时间:2021-09-04 作者:ParisNakitaKejser

我对WordPress开发非常陌生。我在开发自己的类和名称空间时遇到了这个错误,以便更容易在跨平台/框架上重用代码。

我添加了如下CLI命令

wp product:sync
当我运行CLI命令时,我的类在关闭时运行,我可以访问internel WordPress功能不起作用的部分。

CLI\\u控制器。php

<?php

namespace WMS\\Controllers;

use WMS\\Controllers\\CLI\\CLI_Products;

class CLI
{
    function init()
    {
        add_action(\'cli_init\', function () {
            $product_cli = new CLI_Products();

            \\WP_CLI::add_command(\'product:sync\', $product_cli->execute());
            \\WP_CLI::add_command(\'stock:sync\', $product_cli->hello_world());
            \\WP_CLI::add_command(\'order:sync\', $product_cli->hello_world());
        });
    }
}
Product\\u控制器。php

<?php

namespace WMS\\Controllers\\CLI;

use WMS\\Controllers\\WMSApi\\APIService\\Items;

class CLI_Products
{
    public function hello_world()
    {
        \\WP_CLI::line(\'Hello World!\');
    }

    function execute()
    {
        $api_items = new Items();

        $args = array(
            \'post_type\'      => \'product\',
            \'posts_per_page\' => 10
        );

        $loop = new \\WP_Query($args);
        while ($loop->have_posts()) {
            $loop->the_post();
            global $product;

            if ($product->get_sku()) {
                $item = [
                    \'sku\' => $product->get_sku(),
                    \'description\' => get_the_title()
                ];

                print_r($item);
            } else {
                echo \'Product missing SKU number\';
            }
        }

        $items->import($item);
        wp_reset_query();
    }
}
所以当我运行这个命令时,它会给出这个错误

PHP致命错误:未捕获错误:在/var/www/frontend/wp-content/plugins/wordpress-woomerce-plugin/src/Controllers/CLI/Product\\u-Controller中找不到Class\'WMS\\Controllers\\WMSApi\\APIService\\Items\'。php:16堆栈跟踪:#0/var/www/frontend/wp-content/plugins/wordpress-woomerce-plugin/src/Controllers/CLI\\u-Controller。php(14):WMS\\Controllers\\CLI\\CLI\\U产品->;执行()

因此,看起来主文件没有加载成功,是否有办法在我的CLI命令中加载自定义类/名称空间?

1 个回复
SO网友:ParisNakitaKejser

我发现了问题,我发现我遗漏了一个;“供应商”;插件根目录和composer内部的文件夹。json i缺少类的自动加载程序。

因此,解决我的问题的方法是更新我的作曲家。json文件,然后在插件文件夹中运行composer安装命令。

{
    ...
    "require": {
        "php": ">=7.4",
        "guzzlehttp/guzzle": "^7.0"
    },
    "autoload": {
        "psr-4": {
            "WMS\\\\": "src"
        }
    }
}
所以我的CLI代码默认工作,这是我这边的一个配置错误。

相关推荐

使用WP-CLI和/或Search-Replace-DB迁移多站点

我有一个Wordpress 5.5/PHP7.3多站点生产站点安装,我正在尝试将其迁移到本地LAMP开发环境,以便进行编辑。The Problem: 就是在运行Search Replace DB脚本或WP Cli多站点迁移脚本时。一个子网站完美地加载到新的开发域上,同时主网站和具有相同主题的子网站成功加载,但主题似乎已中断(基于visual composer)。可能还有其他非视觉错误。我已经下载了所有文件,正确配置了LAMP virtualhost,并通过PHPMYADMIN将数据库导入到我的本地LAMP