“Dashboard”-命名的PHP文件不包括在内

时间:2021-03-02 作者:goodUser

我做了一个简单的;测试插件演示问题:

my-test-plugin/
├─ includes/
│  └─ dashboard.php
└─ main.php
 <?php // dashboard.php
 echo \'<h1>Dashboard</h1>\';
<?php // main.php
/**
* Plugin Name: My Test Plugin
*/
add_action(\'admin_menu\', \'myTestPlugin_onAdminMenu\');
function myTestPlugin_onAdminMenu() {
  add_menu_page(\'My Dashboard\', \'My Test Plugin\', \'manage_options\', \'my-test-plugin\', \'myTestPlugin_displayDashboardPage\');
}
function myTestPlugin_displayDashboardPage() {
  require_once \'includes/dashboard.php\';
}
此插件仅添加标记为My Test Plugin, 显示;仪表板“;页它在我的开发Windows机器上运行得很好;但令人惊讶的是,它在我的在线web托管服务(运行PHP 7.3.25、Wordpress 5.6.2的LiteSpeed web服务器)上不起作用!

当我更改dashboard.php 其他任何事情(例如。dashboard1.php), 它工作没有任何问题!这里可能有什么问题,我该如何解决?!

1 个回复
SO网友:cjbj

WordPress在上有一个同名文件wp-admin/includes/dashboard.php. 因为您正在使用require_once 如果文件已经加载,PHP将不会加载该文件。

您的设置在本地工作,但不在远程服务器上工作,这表明这与PHP服务器设置有关。本地require_once 识别这两个文件的不同路径,而web服务器无法识别。所以,我会明确地尝试including your plugin\'s directory 在通话中。像这样:

require_once (plugin_dir_path( __FILE__ ) . \'includes/dashboard.php\');