Dashboard Widget Form

时间:2013-10-18 作者:whodeee

我创建了一个仪表板小部件来向应用程序发送推送通知,但按照我的编码方式,每当我在插件编辑器中进行更改并按下更新文件时,代码就会运行,我就会收到一个空白的推送通知。我确信我的问题在于插件代码的这一部分:

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\' );

1 个回复
最合适的回答,由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 checksproper prefixes 到您的数据。

作为补充,我会解决这个问题with Ajax.

结束

相关推荐

JQuery代码在包含在unctions.php中时无法运行

我觉得我肯定错过了一些简单的事情。。。但为了我的生命,我找不到我缺少的东西。我的“坏习惯”是将jQuery函数直接包含在标题中。php文件(以及其他点)。据我所知,这是不允许的,应该使用wp\\u enqueue函数将函数保存在一个单独的文件中以加载它们(如果我得到的正确的话)。我的标题中有一个简单的函数。应在文档就绪时启动的php:<script> // Scroll to Top jQuery(document).ready(function () {&#x