Je suis nouveau sur WordPress. J'ai un code jQuery comme celui-ci ... dans mon fichier header.php
.
jQuery(document).ready(function(){
jQuery("#wp-submit").click(function(){
username=jQuery("#userName").val();
password=jQuery("#passWord").val();
jQuery.ajax({
type: "POST",
url: "<?php echo "http://" . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI']; ?>",
data: "name="+username+"&pwd="+password,
success: function(html){
if(html=='true') {
jQuery("div#result").css('display', 'inline', 'important');
jQuery("div#result").html("Login Successful");
console.log('true');
}
else{
jQuery("div#result").css('display', 'inline', 'important');
jQuery("div#result").html("Wrong username or password");
}
} });
return false;
});
});
et voici le code php dans le même fichier (header.php):
<?php
$uName = $_POST['name'];
$pWord = md5($_POST['pwd']);
$results= $wpdb->get_results("select * from wp_users where user_email='".$uName."' and user_pass='".$pWord."'");
if(count($results)==1)
{
echo 'true';
}
else {
echo 'false';
}
Je ne parviens pas à envoyer de requête au serveur. J'ai une erreur 404.
Qu'est-ce que je fais mal?
Ajax url doit être défini sur wp-admin/admin-ajax.php
, car les demandes ajax doivent être traitées via wp-admin/admin-ajax
dans wordpress. si ajaxurl n'est pas défini, vous pouvez l'obtenir en définissant l'attribut HTML data-url
comme étant data-url="<?php echo get_admin_url().'admin-ajax.php'?>"
.
jQuery(document).ready(function($){
$("#wp-submit").on('click',function(e){
e.preventDefault();
username = $("#userName").val();
password = $("#passWord").val();
ajaxurl = $(this).data('url');
$.ajax({
type: "POST",
url: ajaxurl,
data : {
name : username,
password : password,
action : 'check_user_login'
},
success: function(response){
if(response =='true') {
$("div#result").css('display', 'inline', 'important');
$("div#result").html("Login Successful");
console.log('true');
}else{
$("div#result").css('display', 'inline', 'important');
$("div#result").html("Wrong username or password");
}
}
});
});
});
Maintenant, créez votre fonction ajax en tant que
function user_login(){
//do your stuff here
global $wpdb;
$username=$_POST['name'];
$password=$_POST['password'];
$hash = md5($password);
$query = $wpdb->prepare( "SELECT * FROM `wp_users` WHERE `user_email` = %s AND `user_pass` = %s", $username, $hash );
$result = $wpdb->get_results($query);
if (count($result)==1) { echo 'true';
echo '<span>Login Successful</span>'; exit();
} else if(count($result) < 1) {
echo 'false'; exit(); }
}
Maintenant, la fonction ajax doit être connectée à hook wp_ajax_*
et wp_ajax_nopriv_*
. Ici, * est votre valeur d’action, c'est-à-dire data.action, de sorte qu'elle devient
add_action('wp_ajax_nopriv_check_user_login','user_login');
add_action('wp_ajax_check_user_login','user_login');