仅仅在主题文件夹中有一个文件并不意味着WordPress将加载该文件,或者当访问该文件时,将在WordPress上下文中加载该文件。
我可以想到两种方法:
为了使用WordPress功能,WordPress需要加载。最简单的方法是让WordPress加载文件。将上面的代码放在保存表单的同一模板中——可能是可以访问的,以便WordPress了解页面。只需将表单提交到同一页,而不是另一页。如果没有强有力的理由不这样做,我会这样做。
您也可以使用AJAX API 处理您的表单。
注意:在外部文件中加载WordPress有一种黑客行为,包括wp-load.php
但是,除非你对自己正在做的事情有很好的想法,否则不要搞砸了。
编辑:
基于其他信息,我现在认为更好的解决方案是为表单创建适当的小部件。
class Form_Widget_wpse_104728 extends WP_Widget {
function __construct() {
$opts = array(
\'description\' => \'Display and Process My Form\'
);
parent::WP_Widget(
\'my-form-content\',
\'Some PHP\',
$opts
);
}
function widget($args,$instance) {
// PHP goes here
// Your code to process the form
// Your form itself
}
}
function register_my_widgets() {
register_widget(\'Form_Widget_wpse_104728\');
}
add_action(\'widgets_init\',\'register_my_widgets\');
更好的做法是将整个内容放入插件中,以便您可以在页面加载的早期在挂钩上独立处理表单。