web-dev-qa-db-fra.com

Formulaire de widget de tableau de bord

J'ai créé un widget Dashboard pour envoyer des notifications Push à une application, mais la façon dont je l'ai codé, chaque fois que je modifie l'éditeur de plug-in et que je clique sur Mettre à jour le fichier, le code s'exécute et une notification Push vierge. Je suis sûr que mon problème réside dans cette partie du code du plugin:

if('POST' == $_SERVER['REQUEST_METHOD']) {
    // process the form here
}

Des suggestions sur la façon de résoudre ce problème ou une meilleure façon de le faire?

Voici le résumé de mon code de plugin

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
whodeee

Ce if('POST'...) juste au milieu du code du plugin ne semble pas correct. Vous pouvez vous connecter à load-$pagenow et traiter la soumission du formulaire à cet endroit:

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']}" );
    }
}

Veuillez noter que vous manquez les contrôles de sécurité et les préfixes appropriés à votre Les données.

Et comme note de côté, je résoudrais ceci avec Ajax .

0
brasofilo