WP 插件:为什么我需要依赖库?
WP plugin: Why do I need to require the dependencies of a library?
在 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
require 语句完全按照预期工作,问题在于您要加载的内容。它具有未满足的依赖项,并且依赖于其他未加载的内容。
加载class-wp-filesystem-direct.php
将加载该文件中的内容,但不会搜索它需要的其他内容。 WordPress 不使用 PHP 自动加载
所以一些注意事项:
- WP Admin 在 WordPress 中包含的文件不包含它们的所有依赖项
- 如果您尝试加载继承自尚未加载的 class 的 class,您将收到致命错误
- 您不应该尝试在插件顶部包含 WP Admin 文件,它可能会在前端加载时导致问题
- 如果您想使用 WP_FileSystem,则不需要加载那些文件和文件夹
你的问题是你不能只在 WP Admin 中包含随机文件,它们有需要事先包含的依赖项。
所以你的 require 语句工作正常,
在 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
require 语句完全按照预期工作,问题在于您要加载的内容。它具有未满足的依赖项,并且依赖于其他未加载的内容。
加载class-wp-filesystem-direct.php
将加载该文件中的内容,但不会搜索它需要的其他内容。 WordPress 不使用 PHP 自动加载
所以一些注意事项:
- WP Admin 在 WordPress 中包含的文件不包含它们的所有依赖项
- 如果您尝试加载继承自尚未加载的 class 的 class,您将收到致命错误
- 您不应该尝试在插件顶部包含 WP Admin 文件,它可能会在前端加载时导致问题
- 如果您想使用 WP_FileSystem,则不需要加载那些文件和文件夹
你的问题是你不能只在 WP Admin 中包含随机文件,它们有需要事先包含的依赖项。
所以你的 require 语句工作正常,