2013-05-01 89 views
1

我想在我的主題中做一個ajax請求。WordPress的wp_ajax公共網址?

如果我登錄到後臺,請求會,但是如果我沒有登錄,返回值爲空......請問有什麼解決方案?

筆者認爲:

$.ajax({ 
    type: "POST", 
    url: 'http://www.mysite.com/wp-admin/admin-ajax.php', 
    data: $('#EventForm').serialize()+'&action=event_form', 
    success: function(response){ 
    if(response == 1){ 
     alert('ok'); 
    } else { 
     alert('no ok'); 
    } 
}); 

在functions.php的

add_action('wp_ajax_event_form', 'ajax_event_form'); 
function ajax_event_form(){ 
    global $wpdb; 
    ... 
    echo true; 
    die; 
} 

回答

6

Codex(如果我登錄後臺管理只能):wp_ajax_nopriv_(action)執行對於未登錄用戶在所以,如果你希望它火的前端爲遊客和註冊用戶,你可以這樣做:

add_action('wp_ajax_my_action', 'my_action_callback'); 
add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); 
+0

非常感謝! :) – jlafforgue 2013-05-01 21:21:11

0

創建一個插件和補充一點:

<?php 
/* 
* Plugin Name:ajax 
*/ 
function my_ajax_callback_function() { 
    echo "hiii"; 
    print_r($_POST); 
    exit(); 
} 
add_action('wp_ajax_my_action_name', 'my_ajax_callback_function');  
// If called from admin panel 
add_action('wp_ajax_nopriv_my_action_name', 'my_ajax_callback_function'); 

創建一個js和補充一點:

(function($) { 
    $(document).ready(function(e) { 
     $.ajax({ 
      url: "<?php echo admin_url('admin-ajax.php'); ?>", 
      type: 'POST', 
      data: { 
       action: "my_action_name","name":"hithin","age":"27" 
      }), 
      success: function (data, textStatus, jqXHR) { 
       console.log(data); 
      } 
     }); 
    } 
})(jQuery); 
+0

你也可以做'$(function(){...})'而不是雙包裝 – m02ph3u5 2016-12-08 15:29:17