4

我为我的 wordpress 项目开发了插件。我用 5.3 php 在本地 xampp 服务器上成功测试了它。然后我使用 php 5.2 将我的项目上传到虚拟主机。我遇到的第一个问题是不支持 php 5.2 中的匿名函数。没问题,我用名字重新声明了所有函数。但后来我收到错误调用未定义函数 add_options_page(),我无法解释。请帮我提些建议

我的部分代码:

function mainPage(){
        ///some code
        }

function mainPage2(){

    add_options_page('Submissions of MAIN page contact form', 'Submissions of MAIN page contact form', 'manage_options','ea_submissions2', mainPage());

    }
add_action('admin_menu',mainPage2());

我觉得我的功能有问题,请看一下。 我认为 php 5.2 没有问题,这部分代码也不适用于 php 5.3!我的代码有问题

4

5 回答 5

9

我有一个类似的问题,原来我运行一个函数太早了:

使用admin_init钩子代替init

希望这可以帮助某人:D

于 2013-12-17T10:07:51.650 回答
0

这不起作用,因为您的普通函数未包含在类中,并且因为 add_options_page 到那时还不起作用,这就是您收到错误的原因。

解决方法是在添加操作调用中使用匿名函数,但因此这在 php 5.2 上不起作用。

长话短说,虽然这是可以修复的,但你不应该首先运行 php 5.2。PHP 5.5 已经在开发中,而 5.3 现在已经成为事实上的标准。一个解决方案是要求您的托管公司将 php 升级到至少 5.3,以便您可以使用匿名函数并将其挂接到添加操作调用。

或者,将其全部包装在一个类中,并在 admin init 函数上创建新类。

于 2014-03-31T09:53:09.753 回答
0

意识到这是一个老问题,这是你的问题:

add_action('admin_menu',mainPage2());

在这里,您正在调用 mainPage2() 函数并将该函数的返回值作为参数添加到 add_action 方法。

你应该做

add_action('admin_menu', 'mainPage2');

这样,mainPage2 函数将在 admin_menu 发生时被调用。

于 2016-10-25T20:56:30.557 回答
0

您必须像这样在 admin_menu 中调用您的代码

add_action( 'admin_menu', array(&$this, 'addWidgetSettingsMenu' ));
于 2016-08-26T10:26:16.890 回答
-1

尝试在标题中不留空格:- SubmissionsOfMainPageContactForm

于 2013-10-17T18:38:20.077 回答