我正在尝试将Composer与WordPress插件配合使用

时间:2018-09-13 02:39:52

标签: wordpress composer-php

我的源文件开始如下:

<?php
/**
 * @package JpLists
 */
namespace Inc\Pages;

use WP_List_Table;

class ListTable extends WP_List_Table {

尝试扩展标准WordPress类时,在浏览器中出现以下错误:

Fatal error: Class 'WP_List_Table' not found in /srv/www/wordpress/wp-content/plugins/jpLists/inc/Pages/ListTable.php on line 9

This post suggests Composer + WordPress plugins is a bad idea

我将投入使用并返回硬编码的require_once()调用,但是名称空间和自动加载的想法吸引了我。

我的composer.json文件如下:

{
    "name": "jp/jp-lists",
    "description": "WordPress plugin",
        "type": "wordpress-plugin",
    "license": "GPL",
    "authors": [
        {
            "name": "JP",
            "email": "jp@example.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {},
    "autoload": {
        "psr-4":{"Inc\\": "./inc"}
    }
}

2 个答案:

答案 0 :(得分:0)

事实证明,只要在名称之前添加一个'\',PHP就会知道您是在全局名称空间中引用一个类,而不是在文件开头指定的名称空间。

use \WP_List_Table;

几个月来,我已经放弃了使用命名空间和作曲家的工作,但是在对命名空间进行了一些认真的研究之后,我决定再次解决该问题,这是一个简单的解决方法。

答案 1 :(得分:-1)

请将以下内容添加到composer.json。

[示例:wp-content / plugins / example / src / composer.json]


(typeof props)["car"]["color"]

并生成自动加载文件

"autoload": {
    "files": ["../../../../wp-admin/includes/class-wp-list-table.php"]
}

写入类文件

composer dumpautoload

但是我不知道使用ABSPATH方法


我使用Google翻译是因为我不太懂英语。