WP插件:为什么需要库的依赖项?

问题描述 投票:0回答:1

在WordPress插件中,这不起作用

<?php

/**
 * Plugin Name:       test
 * Plugin URI:        _
 * Description:       _
 * Version:           0.0.1
 * Author:            _
 * Author URI:        _
 * License:           GPL-2.0+
 * License URI:       _
 * Text Domain:       _
 */


// If this file is called directly, abort.
if (!defined('WPINC')) {
    die;
}

require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';

但是这确实可行

require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';

class-wp-filesystem-direct内部,您可以看到它是从class-wp-filesystem-base延伸的

为什么我需要两个库?


错误是

Fatal error: Uncaught Error: Class 'WP_Filesystem_Base' not found in /home/..../domains/..../public_html/wp-admin/includes/class-wp-filesystem-direct.php:16 
php wordpress path require
1个回答
0
投票

require语句按预期的方式工作,问题在于您要加载的内容。它具有未满足的依赖项,并且依赖于其他未加载的事物。

正在加载class-wp-filesystem-direct.php将在该文件中加载内容,但不会搜索其所需的其他内容。 WordPress不使用PHP自动加载

所以有一些注意事项:

  • WordPress中的WP Admin包含文件并不包含所有依赖项>>
  • 如果您尝试加载继承自尚未加载的类的类,则会出现致命错误
  • 您不应该尝试在插件顶部包含WP Admin文件,它可能会通过在前端加载而引起问题
  • 如果您想使用WP_FileSystem,则不需要加载这些文件和文件夹
  • 您的问题是您不能只在WP Admin中包含随机文件,它们具有需要预先包含的依赖项。

所以您的require语句可以正常工作,

© www.soinside.com 2019 - 2024. All rights reserved.