我创建了一个仪表板小部件来向应用程序发送推送通知,但按照我的编码方式,每当我在插件编辑器中进行更改并按下更新文件时,代码就会运行,我就会收到一个空白的推送通知。我确信我的问题在于插件代码的这一部分:
if(\'POST\' == $_SERVER[\'REQUEST_METHOD\']) {
// process the form here
}
有没有关于如何解决这个问题的建议或更好的方法?
以下是我的插件代码要点
if(\'POST\' == $_SERVER[\'REQUEST_METHOD\']) {
//do the stuff with the \'message\'
}
// Function that outputs the contents of the dashboard widget
function dashboard_widget_function() {
echo \'<form method="post">
<p>Message: <input type="text" name="message" /></p>
<p><input type="submit" /></p>
</form>\';
}
// Function used in the action hook
function add_dashboard_widgets() {
wp_add_dashboard_widget(\'push_notification\', \'Push Notification\', \'dashboard_widget_function\');
}
// Register the new dashboard widget with the \'wp_dashboard_setup\' action
add_action(\'wp_dashboard_setup\', \'add_dashboard_widgets\' );
最合适的回答,由SO网友:brasofilo 整理而成
那个if(\'POST\'...)
仅仅是在插件代码的中间,似乎是不对的。你可以加入load-$pagenow
并在此处处理表单提交:
add_action( \'load-index.php\', \'check_posted_data\' );
function check_posted_data()
{
if( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'my_prefix_message\'] ) ) {
wp_die( "I\'m here! {$_POST[\'my_prefix_message\']}" );
}
}
请注意你失踪了
security checks 和
proper prefixes 到您的数据。
作为补充,我会解决这个问题with Ajax.