質問があります。
単純なajax関数を作りました。私がログインしたとき、それは完璧に機能します。ログアウトすると-1が返されます(Wordpress 3.1以降)。
どうして ?わかりません。正確には、-1と私のHTMLコード全体を返します。 (笑)またクレイジーになるつもりです。
PHP(functions.php内)
function say_coucou(){
check_ajax_referer( 'hello', 'nonce' );
echo "Hello";
die(); // this is required to return a proper result
exit;
}
add_action('wp_ajax_hello_hello', 'say_coucou');
add_action('wp_ajax_nopriv_hello_hello', 'say_coucou');
*JAVASCRIPT/JQUERY/AJAX(footer.php内)*
function blabla(){
var toSend = {
action:"hello_hello",
post_id: "<?php echo $wp_query->post->ID; ?>",
nonce: "<?php echo js_escape( wp_create_nonce('hello')); ?>"
};
url_action = 'http://www.***********/wp-admin/admin-ajax.php';
$.ajaxSetup({cache:true});
$.ajax({
url: url_action,
type:'POST',
data: toSend,
cache: false,
success:function(results)
{
alert(results)
}
});
}
何か助けてください。ありがとう。
それが見つかりました!
私はリダイレクトをしたので、私のajax関数のステータスは302でした。
みんなありがとう。
Rarst氏は、ログインとログアウトの両方で彼のためにうまくいった、私も同じことを確認することができる、これはうまくいく私の醜いテストコードです、あなたのコードのほんの少しハックされたバージョンです。
function say_coucou(){
check_ajax_referer( 'hello', 'nonce' );
echo "Hello";
die;
}
add_action('wp_ajax_hello_hello', 'say_coucou');
add_action('wp_ajax_nopriv_hello_hello', 'say_coucou');
add_action('admin_print_footer_scripts','blabla',20000);
add_action('wp_head','enj',20000);
add_action('wp_footer','blabla',20000);
function enj() {
wp_enqueue_script('jquery');
}
function blabla(){
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$('a#blabla').click(function(){
var toSend = {
action:"hello_hello",
post_id: "1",
nonce: "<?php echo esc_js( wp_create_nonce('hello') ); ?>"
};
url_action = "<?php echo admin_url('/admin-ajax.php'); ?>";
$.ajaxSetup({cache:true});
$.ajax({
url: url_action,
type:'POST',
data: toSend,
cache: false,
success:function(results) {
alert(results)
}
});
});
});
</script>
<a href="#" id="blabla">aaa</a>
<?php
}
ログアウトとログインの両方で動作しました(管理者がログアウトしていないため、明らかに管理者ログアウトはしていません)。
現実的には実際のコード形式ではあまりフックを使用しません。それで、私のハックバージョンのコードを物事のやり方の良い例として考えてはいけません。 ).