WordPress函数在包含的php文件中出现致命错误

时间:2013-05-20 作者:Robert Al-Romhein

首先,我的问题类似于this thread. 然而,张贴在那里的解决方案对我不起作用。

我正在创建一个插件,它使用Shortcode API在页面上显示联系人表单。

插件文件夹内容:

请联系。php(主插件文件)验证。php(包括php文件)主文件有常用的插件头,其中调用的WordPress函数按预期工作[即:get\\u permalink()]

验证。php文件包含在contact中。php如下:

define ("PLUGIN_PATH", plugin_dir_path(__FILE__));
include_once dirname( __FILE__ ) . \'/validate.php\';
我的问题是在validate中调用的任何WordPress函数。php将抛出一个致命错误。PHP函数按预期工作,只有WordPress函数抛出致命错误:

Fatal error: Call to undefined function sanitize_text_field() in /{FULL WEBSITE PATH}/ralrom-contactform/validate.php 
我应该如何包括验证。php文件是否能够从中调用WordPress函数?

我尝试了“require”和“include”变体,但都抛出了相同的致命错误。

Before using multiple files, I had a working version as a single file shown here:

单个php文件下的原始工作代码:http://pastebin.com/qM5aj9qY

两个php文件下的错误代码:http://pastebin.com/KUCbg6rJ

2 个回复
最合适的回答,由SO网友:Otto 整理而成

您正在将表单发布到验证。php文件,因此不会加载WordPress代码。相反,您需要将表单发布到当前URL或home\\u URL或类似的内容,然后让插件截取数据并相应地执行操作,以便在使用其功能之前加载WordPress代码。

SO网友:Robert Al-Romhein

多亏了这些评论,我才明白我所要做的并不完全可能。

将数据发布到php页面的原因会将发布数据发送到WordPress循环或“框架”之外。因此,不会加载WordPress函数。解决此问题的一种方法是要求wordpress文件包含要在php页面中使用的函数,即:

require_once {path to wordpress wp-includes}/formatting.php;
然而,我觉得这是一种肮脏的做事方式。

相反,我跟着Otto\'s suggestion 在WordPress加载页面之前,通过在“init”挂钩上附加一个函数,截获了POST数据:

add_action("init", "intercept_post");
表单操作设置为当前页面,在intercept\\u post函数中,我运行数据验证,发送电子邮件并重定向到同一页面。这将有效地发送POST数据,并防止页面刷新再次提交数据。

结束

相关推荐

Google Map在Tab Plugins的第二个选项卡上无法使用

我正在使用postTabs plugin 和Comprehensive Google Map Plugin, 我的问题是,当我在第二个选项卡上有我的谷歌地图时,地图没有按预期加载。但是如果我把它移到第一个标签上,效果会非常好。。有没有办法让地图在第二个选项卡上工作?实际上,无论我使用哪个选项卡插件,地图都不会正确加载到第二个选项卡上。。欢迎提出任何建议。谢谢:)