Bonjour à tous !
J'ai voulu rendre mon plugin Wordpress de messagerie interne plus fluide en intégrant AJAX. Sur Wordpress, Ajax fonctionne avec jQuery, mon problème est lorsque l'on envoie un e-mail (depuis mon plugin), on fait appel à une fonction javascript qui va faire un appel à un appel ajax qui va envoyer le message... Mais le problème est que la fonction d'envoie du mail vérifie si les données ont bien été transmises... Et en l'occurence, et bien isset($_POST['desti']) ou isset($_REQUEST['desti']) ne marche pas ! Voici mon code :

Script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 jQuery('#send_mail').submit(function (e) {
     e.preventDefault(); // Le navigateur ne peut pas envoyer le formulaire
 
    var donnees = jQuery(this).serialize(); // On créer une variable content le formulaire sérialisé
 
    alert(donnees.substring(8));
    console.log('hello');
    jQuery.ajax({
        url : ajaxurl,
        type : 'POST',
        cache: false,
        data : '?action=send_mail&' + donnees,
 
          success : function(code_html, statut){
          alert(code_html);
           jQuery(code_html).appendTo("#composition"); // On passe code_html à jQuery() qui va nous créer l'arbre DOM !
       },
 
 
 
    });
});
PHP du plugin :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
add_action('wp_enqueue_scripts', 'ajax_test_enqueue_scripts');
add_action('wp_ajax_send_mail', 'send_mail' );
function send_mail()
{
echo '<script>alert(\'hello\');</script>';
 
if (isset($_REQUEST['desti']))
    {
    ?>
    <?php
    echo '<script>alert(\'script correct\');</script>';
    global $wpdb;
 
            if (empty($_POST['obj']))
            {
                    $obj = 'No Subject';
            }
            else
            {
                    $obj = $_POST['obj'];
            }
            $test = $wpdb->get_var($wpdb->prepare('SELECT can_mail FROM wp_users WHERE id = %d', get_current_user_id()));
         if (isset($_POST['envoie']))
            {
                    $folder = 'inbox';
                    if ( $test == 0 && $_POST['desti'] != 1)
                    {
                 $folder = 'draft';
                    echo '<script>alert(\'Vous n\\\'êtes pas autorisé à envoyer des messages, votre mail va être sauvegardé dans les brouillons.\n Merci de contacter votre administrateur par e-mail : admin.\');</script>';
                    }
            }
            else
            {
                    $folder = 'draft';
 
            }
 
 
 
            if (isset($_POST['id_mess']) && isset($_POST['brouillon']))
            {
 
                    $wpdb->update('wp_messagerie', array('receiver' => $_POST['desti'], 'objet' => $obj, 'message' => $_POST['mess']), array('id' => $_POST['id_mess']), array('%d', '%s', '%s'), array('%d', '%s', '%s'));
                    $wpdb->query('UPDATE wp_messagerie SET date_envoi = NOW() WHERE id = ' . $_POST['id_mess']);
            }
            else
            {
                    $response = $wpdb->query($wpdb->prepare('INSERT INTO wp_messagerie(sender, receiver, unread, objet, message, date_envoi, dossier) VALUES (%d, %d, 1, %s, %s, NOW(), %s);', get_current_user_id(), $_POST['desti'], $obj, $_POST['mess'], $folder));
 
                    if (isset($_POST['id_mess']) && isset($_POST['envoie']))
                    {
                            $wpdb->query($wpdb->prepare('DELETE FROM wp_messagerie WHERE id = %d', $_POST['id_mess']));
                    }
            }
 
        echo '?page=messagerie&action=inbox';
            die();
    }
    wp_die();
    }
 
 
function ajax_test_enqueue_scripts() {
 
    wp_enqueue_script( 'script_send', plugins_url( '/script_send.js', __FILE__ ), array('jquery'), '1.0', true );
 
    wp_localize_script( 'script_send', 'script', array(
        'ajax_url' => admin_url( 'admin-ajax.php' )
    ));
 
}
Voilà, j'espère que vous pourrez m'aider ! Parce que lorsque que je regarde dans la requête POST effectué, les données sont bien transmises...