2014-10-25 4 views
1

У меня уже есть одна форма Ajax на моем сайте Wordpress. Теперь мне нужен второй. Поэтому я дублирую функцию в Function.php. Но это не работает.Больше одной формы ajax на wordpress

Первая форма - контакт. Второй - надпись. Первый работает отлично. Но для второго ничего не происходит, когда я пытаюсь отправить ...

Здесь мой код.

add_action('wp_ajax_contact', '_ajax_contact'); 
    add_action('wp_ajax_nopriv_contact', '_ajax_contact'); 

    function _ajax_contact() { 

/*-----------------------------------------------------------------------------------*/ 
/* On vérifie le nonce de sécurité 
/*-----------------------------------------------------------------------------------*/ 

check_ajax_referer('ajax_contact_nonce', 'security'); 


/*-----------------------------------------------------------------------------------*/ 
/* Protection des variables 
/*-----------------------------------------------------------------------------------*/ 

$subject = wp_strip_all_tags($_POST['subject']); // Sujet du message 
$name = wp_strip_all_tags($_POST['name']); // Nom de l'expéditeur 
$sender = sanitize_email($_POST['email']); // Adresse e-mail de l'expéditeur 
$message = nl2br(stripslashes(wp_kses($_POST['message'], $GLOBALS['allowedtags']))); 


/*-----------------------------------------------------------------------------------*/ 
/* Gestion des headers 
/*-----------------------------------------------------------------------------------*/ 

$headers = array(); 
$headers[] = 'FROM : ' . $name . ' <' . $sender .'>' . "\r\n"; 


/*-----------------------------------------------------------------------------------*/ 
/* Gestion du message 
/*-----------------------------------------------------------------------------------*/ 

ob_start(); 
include(get_template_directory() . '/inc/mail/contact.php'); 
$mail = ob_get_contents(); 
ob_end_clean(); 


/*-----------------------------------------------------------------------------------*/ 
/* Envoie de l'e-mail 
/*-----------------------------------------------------------------------------------*/ 


// Support d'un contenu HTML dans l'email 
add_filter('wp_mail_content_type', create_function('', 'return "text/html";')); 

if(wp_mail('[email protected]', '[subject] Contact', $mail, $headers)) { 

    // Tout est ok, on avertit l'utilisateur 
    wp_send_json('success'); 

} 
else { 

    // Il y a une erreur avec le mail, on avertit l'utilisateur 
    wp_send_json('error'); 
     } 


    } 

       /*-----------------------------------------------------------------------------------*/ 
/* Second form 
/*-----------------------------------------------------------------------------------*/ 

    add_action('wp_ajax_inscription', '_ajax_inscription'); 
    add_action('wp_ajax_nopriv_inscription', '_ajax_inscription'); 

    function _ajax_inscription() { 

/*-----------------------------------------------------------------------------------*/ 
/* On vérifie le nonce de sécurité 
/*-----------------------------------------------------------------------------------*/ 

check_ajax_referer('ajax_inscription_nonce', 'security'); 


/*-----------------------------------------------------------------------------------*/ 
/* Protection des variables 
/*-----------------------------------------------------------------------------------*/ 
$subject = wp_strip_all_tags($_POST['subject']); // Sujet du message 
$name = wp_strip_all_tags($_POST['name']); // Nom de l'expéditeur 
$sender = sanitize_email($_POST['email']); // Adresse e-mail de l'expéditeur 
$message = nl2br(stripslashes(wp_kses($_POST['message'], $GLOBALS['allowedtags']))); 


/*-----------------------------------------------------------------------------------*/ 
/* Gestion des headers 
/*-----------------------------------------------------------------------------------*/ 

$headers = array(); 
$headers[] = 'FROM : ' . $name . ' <' . $sender .'>' . "\r\n"; 


/*-----------------------------------------------------------------------------------*/ 
/* Gestion du message 
/*-----------------------------------------------------------------------------------*/ 

ob_start(); 
include(get_template_directory() . '/inc/mail/contact.php'); 
$mail = ob_get_contents(); 
ob_end_clean(); 


/*-----------------------------------------------------------------------------------*/ 
/* Envoie de l'e-mail 
/*-----------------------------------------------------------------------------------*/ 


// Support d'un contenu HTML dans l'email 
add_filter('wp_mail_content_type', create_function('', 'return "text/html";')); 

if(wp_mail('[email protected]', $subject, $mail, $headers)) { 

    // Tout est ok, on avertit l'utilisateur 
    wp_send_json('success'); 

} 
else { 

    // Il y a une erreur avec le mail, on avertit l'utilisateur 
    wp_send_json('error'); 
} 

}

ответ

1

Спасибо за ваш ответ, наконец, я нашел другое решение. Проблема не была в этом файле.

Это было в моем файле формы. Я забыл изменить значение на кнопке отправки.

Моя ошибка:

<input type="hidden" name="action" value="contact" /> 
      <?php wp_nonce_field('ajax_inscription_nonce', 'security'); ?> 
      <input id="send-message" type="submit" value="Envoyer"> 

Хороший код

<input type="hidden" name="action" value="inscription" /> 
      <?php wp_nonce_field('ajax_inscription_nonce', 'security'); ?> 
      <input id="send-message" type="submit" value="Envoyer"> 

Большое спасибо.

1

Глядя на код, то первое, что я хотел бы попробовать сделать это переименовать поля с name='name'. Я закодировал множество форм и почти во всех случаях WP не отправлял мои формы, потому что он зарезервировал поле с name='name'.

Также активируйте режим WP_DEBUG, чтобы показать все ошибки и попытаться найти ошибки JavaScript с помощью Firebug или консоли браузера.

+0

Да, уникальные имена полей очень важны. , , , pherak, я сделал некоторое форматирование и перефразирование, чтобы больше синхронизировать с тем, что здесь используется, проверьте историю сообщений, чтобы вы могли учиться на нем. Гид [ответ] имеет приятные советы. Удачи! – brasofilo

+0

Благодарим вас за исправления и полезные советы brasofilo. – Patrik

Смежные вопросы