由于AJAX可以从任何地方调用,甚至可以由搜索引擎调用,因此应该手动传递ID。为此,您需要在模板中的某个位置包含当前页面的ID。
通常的做法是在隐藏的input
元素。可以将此隐藏元素添加到模板文件中:
<input id="my-post-id" type="hidden" value="<?php echo get_the_ID();?>">
现在,您可以在AJAX调用中获取帖子的ID:
var theID;
theID = jQuery("#my-post-id").val();
这样,您可以在通话中包含此值:
function customFunction() {
var theID;
theID = jQuery("#my-post-id").val();
jQuery.ajax({
type: \'GET\',
url: \'AJAX URL HERE\',
data: { postid: theID },
// The rest of the AJAX here
}
};
现在,您可以检查是否在管理AJAX中设置了ID:
function get_blueprints_for_building () {
// Stop execution if the function is called from out of the page
if (!isset($_GET[\'postid\'])) exit(\'Please set a post ID!\');
$id = $_GET[\'postid\'];
// Now we have the ID!
}
给你。
注意
我还建议您使用REST API而不是Admin AJAX。设置起来更容易、更快。看看我的答案
here.
更新,而不是创建隐藏输入,您还可以使用wp_localize_script
将ID传递给脚本。不过,您需要有一个排队脚本。
wp_localize_script(
\'my-js\', // The ID of your enqueued JS file
\'my_localized_js\', // The prefix for object
$my_localized_array // The array that contains your data
);
现在,您可以在数组中设置当前页面的ID:
$my_localized_array = array(
\'postID\' => get_the_ID,
);
完成此操作后,您可以使用以下方法访问JS文件中的ID:
var id = my_localized_js.postID;
稍后可以在AJAX调用中使用。