2015-09-08 44 views
1

我創建了一個WordPress插件,其中有2個php文件a.phpb.phpa.php是主要的插件文件,其中b.php將使用AJAX調用。現在在b.php之內,我需要訪問WordPress核心功能,如plugins_url,sanitize_text_field等。以前,我已經包含使用require_oncewp-load.php文件,但這被WordPress拒絕。在我的插件的自定義腳本中獲取wordpress核心功能

任何更好的方法來實現這一目標?

+0

你用WordPress方式調用ajax嗎? – Noman

+0

不,我只是用jQuery.ajax。 –

+1

您可能需要根據wordpress的方式更改您的ajax。所以它不會被拒絕 – Noman

回答

1

節省自己的時間,只是做阿賈克斯WP方式。

首先,添加你的腳本,並通過AJAX的URL(您可以硬編碼,如果你的插件是供個人使用)是這樣的:

wp_enqueue_script('my_ajax_script', plugins_url('/myscript.js', __FILE__), array('jquery')); 
wp_localize_script('my_ajax_script', 'my_ajax_object', array('ajax_url' => admin_url('admin-ajax.php')); 

在JS,你可以通過my_ajax_object.ajax_url

訪問URL

你的Ajax調用會是什麼樣子

var request = {action: 'name_of_your_action' /*other params go here*/} 
$.ajax({type: "post", dataType: "json", url: my_ajax_object.ajax_url, data: request}).done(function (e) 
{ 
    alert('All cool'); 
}) 

然後寫函數來處理您的Ajax調用

function my_ajax_handler() 
{ 
    /*Do some magic*/ 
    echo json_encode(array('some_response_var'=>'some response value')); 
    die(); 
} 

最後,讓wordpress知道你需要用你的函數處理name_of_your_action行動。你可以這樣做

add_action('wp_ajax_name_of_your_action', 'my_ajax_handler'); // for logged in users 
add_action('wp_ajax_nopriv_name_of_your_action', 'my_ajax_handler'); // for guests 

請參閱Codex瞭解更多信息。

相關問題