在WordPress中,可以使用wp_localize_script()
函数来将WordPress的文件路径传递给JavaScript。这样,你就可以在AJAX请求中使用这个路径。
首先,在WordPress主题的functions.php
文件中添加以下代码:
function custom_enqueue_scripts() {
wp_enqueue_script( 'custom-ajax-script', get_template_directory_uri() . '/js/custom-ajax-script.js', array( 'jquery' ), '1.0', true );
wp_localize_script( 'custom-ajax-script', 'custom_ajax_object', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'template_dir' => get_template_directory_uri()
));
}
add_action( 'wp_enqueue_scripts', 'custom_enqueue_scripts' );
在这段代码中,我们使用了wp_localize_script()
函数来将ajax_url
和template_dir
传递给JavaScript文件custom-ajax-script.js
。ajax_url
是指向WordPress的AJAX处理脚本的URL,template_dir
是主题文件夹的URL。
接下来,在custom-ajax-script.js
文件中,你可以使用这个路径来定义AJAX请求的URL。下面是一个示例:
jQuery(document).ready(function($) {
var ajaxUrl = custom_ajax_object.ajax_url;
var templateDir = custom_ajax_object.template_dir;
$.ajax({
url: ajaxUrl,
type: 'POST',
data: {
action: 'my_ajax_action',
template_dir: templateDir
},
success: function(response) {
// 处理成功的响应
},
error: function(xhr, status, error) {
// 处理错误
}
});
});
在这个示例中,我们在AJAX请求的data
参数中传递了template_dir
变量,并将其值设置为custom_ajax_object.template_dir
,这个值就是我们在wp_localize_script()
函数中传递的主题文件夹的URL。
最后,在WordPress的functions.php
文件中,可以添加AJAX处理函数来处理这个请求。以下是一个示例:
function my_ajax_action_callback() {
$template_dir = $_POST['template_dir'];
// 在这里可以使用$template_dir进行处理
// 返回响应
wp_send_json_success( '请求成功!' );
}
add_action( 'wp_ajax_my_ajax_action', 'my_ajax_action_callback' );
add_action( 'wp_ajax_nopriv_my_ajax_action', 'my_ajax_action_callback' );
在这个示例中,我们定义了my_ajax_action_callback()
函数来处理AJAX请求,并使用$template_dir
变量进行处理。
通过这种方式,你可以在AJAX请求中获取WordPress的文件路径。