我創建了一個WordPress插件,其中有2個php文件a.php
和b.php
。 a.php
是主要的插件文件,其中b.php
將使用AJAX調用。現在在b.php
之內,我需要訪問WordPress核心功能,如plugins_url
,sanitize_text_field
等。以前,我已經包含使用require_once
的wp-load.php
文件,但這被WordPress拒絕。在我的插件的自定義腳本中獲取wordpress核心功能
任何更好的方法來實現這一目標?
我創建了一個WordPress插件,其中有2個php文件a.php
和b.php
。 a.php
是主要的插件文件,其中b.php
將使用AJAX調用。現在在b.php
之內,我需要訪問WordPress核心功能,如plugins_url
,sanitize_text_field
等。以前,我已經包含使用require_once
的wp-load.php
文件,但這被WordPress拒絕。在我的插件的自定義腳本中獲取wordpress核心功能
任何更好的方法來實現這一目標?
節省自己的時間,只是做阿賈克斯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
你的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瞭解更多信息。
爲了將常規的PHP頁面轉換爲使用WordPress的頁面,您需要在每個頁面的開頭添加以下代碼片段之一。
<?php
/* Short and sweet */
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>
https://codex.wordpress.org/Integrating_WordPress_with_Your_Website#Grab_the_header
你用WordPress方式調用ajax嗎? – Noman
不,我只是用jQuery.ajax。 –
您可能需要根據wordpress的方式更改您的ajax。所以它不會被拒絕 – Noman