Wp-load.php重新声明类

时间:2013-03-30 作者:manc

我试图在一个独立的PHP文件中加载WordPress选项。文件位于/wp-content/plugins/plugin-name/file.php. 我使用以下方法打开wp load。php:

if (file_exists(\'../../../wp-load.php\')) {
    require_once (\'../../../wp-load.php\');
}
这样做会输出以下错误:

致命错误:无法在/var/www/vhosts/domain.com/httpdocs/wp-content/plugins/plugin-name/class-frontend.php:5中重新声明某些\\u plugin\\u函数()。com/httpdocs/wp-content/plugins/plugin-name/class-frontend。php在线12

正在删除中的所有代码class-frontend.php 确实解决了问题,但我当然需要那个文件。class-frontend.php 没有在独立PHP文件中调用,因此我不确定为什么会发生这种情况。

3 个回复
SO网友:Joshua Herbison

当您在插件的根文件或函数中声明函数时,就会出现问题。主题的php文件。您需要为函数指定一个文件并将这些函数移动到该文件中。

例如:

您的插件称为某个插件,根文件称为某个插件。php。文件上的任何函数都有一些插件。php将导致wp加载出错。因此,创建一个名为“一些插件函数”的文件。php和需要它一次就像

require_once(\'some-plugin-functions.php\');
并将函数移动到该文件。这将消除错误消息。

SO网友:Paul G.

我假设您直接调用PHP文件。

让我们逻辑地考虑一下。

直接调用自定义PHP文件,它将加载该文件中的所有函数。

那么你包括wp-load.php 现在将加载WordPress。

加载WordPress的一部分是加载您的活动插件。如果调用的原始文件included 当WordPress加载时,该文件将在一开始加载一次,然后在WordPress启动其所有插件时第二次加载。

是的,您将两次声明函数和变量。

一个简单的解决方案是在the beginning of your main plugin file:

if ( empty( $flag_to_say_ive_been_executed ) ){
    $flag_to_say_ive_been_executed = true;
}
else {
    return;
}
总的来说,更好的解决方案是不必像现在这样直接调用插件文件来加载WordPress。你可能想重新设计你的方法来解决任何你想解决的问题。

SO网友:vancoder

此错误与wp负载无关。php。您在插件文件中两次声明了“some\\u plugin\\u function”函数。错误消息会告诉您确切的查找位置。

您不需要调用类前端。php从您的独立php文件中获取错误。它位于插件中,所以只要该插件处于活动状态,它就会被解析。

结束

相关推荐

在另一个Include()之后包含‘wp-load.php’会生成错误

我知道所有的downsides 尝试包括wp负载。php,但请记住:)我正在尝试创建自己的类似ajax的管理功能,以控制是否加载默认WordPress环境,是否使用SHORTINIT 常量定义为true,并根据通过AJAX访问的特定函数的要求,对插件的每个模块进行细粒度控制。我能想到的唯一方法是通过自定义文件执行AJAX,而不是管理AJAX。php,然后包括wp加载。需要时使用php。事实上,我已经成功地使用了几个月了。我已经给文件命名了bootstrap.php, 它位于我插件的“includes”目录