2010-11-02 31 views
1

在我的wordpress插件中,我需要有一個JSON選項來加載,使用jquery,關於自定義帖子類型的信息。這個jquery調用將進入一個頁面,所有用戶都應該看到它。在wordpress中調用json函數

據我從codex明白我應該有一個功能:

function my_json_returning_function(){ 
    // get json objects here 
    echo $json; 
    die(); 
} 

還有操作:

add_action('wp_ajax_my_json_action', 'my_json_returning_function'); 
add_action('wp_ajax_nopriv_my_json_action', 'my_json_returning_function'); 

所有在我的插件文件。

則是這樣的:

jQuery(document).ready(function($) { 
    var data = { 
     action: 'my_json_action', 
    }; 

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php 
    jQuery.post(<?php echo admin_url('admin-ajax.php');?>, data, function(response) { 
     alert('Got this from the server: ' + response); 
    }); 
}); 

應該叫有問題的功能。

我真正的問題是我應該在哪裏放置所有不同的部分 - 如果有東西丟失。

php函數和動作鉤子進入插件文件。但是,我更加困惑的JavaScript。我想把它放在插件的JavaScript文件中,但因爲我必須使用PHP獲取管理網址,這成爲一個問題。

另外,如何確保僅在某個頁面中調用腳本?是否有更多的鉤子和過濾器我應該適應?或者,在該頁面上執行簡碼時,可以使用wp_enqueue_script加載它,或者是後期加載,因爲我似乎需要將它加載到標題中。

很多問題,但我希望你能理解我的問題的基礎 - 我很難將代碼放在wordpress結構的正確位置。

編輯: 調用回波ADMIN_URL( '管理員-ajax.php');至少在我眼中是最優雅的做法。我寧願有一個json API,以及其獨立的url,並在ajax調用中調用它。我將如何去設置一個WordPress的頁面,只返回一個JSON對象?

+0

這個問題[已在WordPress的堆棧交換回答](http://wordpress.stackexchange.com/questions/3610 /如何管理的阿賈克斯通話和JSON的功能於WordPress的)。訣竅是您可以使用'wp_localize_script()'將PHP配置值發送給Javascript。 – 2010-11-17 14:41:00

回答

1

你上面有什麼是部分正確的。使用呼叫管理-ajax.php時

,你從WordPress抄本頁面的評論已是

// since 2.8 ajaxurl is always defined in the admin header 
// and points to admin-ajax.php 

這僅僅是它...使用JavaScript變量「ajaxurl」在地方php的通話..

所以它看起來像這樣

jQuery(document).ready(function($) { 
var data = { 
    action: 'my_json_action', 
}; 

    // since 2.8 ajaxurl 
    jQuery.post(ajaxurl, data, function(response) { 
    alert('Got this from the server: ' + response); 
    }); 
}); 

,應該是你..只是將所有的功能在你的主要插件文件中。 當wordpress加載它會產生一個變量,稱爲ajaxurl,然後你可以在你的腳本中使用.. :)

+0

是的,但據我瞭解,它只會在管理頁面上有效,並且這應該在普通頁面上供所有人看到。所以ajaxurl不會被定義。 但是,出於好奇,你會在你的例子中將jquery函數放在哪裏? – niklasdstrom 2010-11-02 18:57:31

+0

在這個例子中,如果它是我創建的插件,我會將它放在主插件.php頁面中,我通常的做法是在我的插件文件夾結構中創建一個名爲wp-jquery的新php文件。在這個文件中的PHP將是我對add_action鉤子的調用,例如:wp_ajax_MYFUNCTION也使用wp_ajax_nopriv_MYFUNCTION,它允許在前端調用文件,然後在我的主插件.php頁面中包含該文件。即:include('inc/wp-jquery.php');在這裏發帖可能有助於http://geekpreneur.blogspot.com/2009/06/how-to-use-wpajax-in-wordpress.html – Marty 2010-11-03 11:03:34

相關問題