我试图通过ajax请求调用位于我的插件子文件夹中的.php文件。我已经尝试了很多不同的方法,包括get_template_part,但我似乎无法获取要呈现的内容。我觉得我可能做错了,但我不确定下一步该尝试什么。该文件位于上面的一个目录中,然后位于另一个名为" Templates"的目录中。
tps_show_modal
是自定义函数,第二个参数是模态框的内容。 (此功能已在其他地方确认)。
感谢任何帮助。
PS。我还需要将变量(spaceID
)传递给包含的文件,因此使用set_query_var()
。
PPS。在Wordpress环境中工作
这是我的ajax请求:
$(document).on('click', '.uiSpaceTitle', function(e) {
var spaceID = $(this).attr('data-spaceid');
$.ajax({
type : 'post',
dataType : 'json',
url : myAjax.ajaxurl,
context : this,
data: {
action: 'tps_get_space_info_block_ajax', spaceID:spaceID
},
success: function(response) {
console.log(response);
var wWidth = $(window).width();
var dWidth = wWidth * 0.8; //this will make the dialog 80% of the window
tps_show_modal('Space Info', response, false, 'OK', dWidth);
}
});
e.preventDefault();
});
这是我调用的php函数:
add_action('wp_ajax_tps_get_space_info_block_ajax', 'tps_get_space_info_block_ajax');
add_action('wp_ajax_nopriv_tps_get_space_info_block_ajax', 'tps_get_space_info_block_ajax');
function tps_get_space_info_block_ajax() {
set_query_var('spaceID', $_REQUEST['spaceID']);
ob_start();
include('../templates/space-info-pane.php');
$result = ob_get_clean();
$result = json_encode($result);
echo $result;
die();
}
答案 0 :(得分:0)
答案是Wordpress在插件中包含文件时很奇怪。我不得不使用它而不是vanilla包含文件路径:
include(plugin_dir_path( __DIR__ ).'templates/space-info-pane.php');
Wordpress codex页面上的这条评论让我在那里:https://developer.wordpress.org/reference/functions/plugin_dir_path/#comment-2085