AJAX请求是new 请求到服务器,这是对admin-ajax.php
. 那不是一个单一的帖子页面。任何逻辑取决于is_single()
或者任何其他类似的页面级模板标记都无法工作。如果AJAX回调需要此类信息,则必须在AJAX请求中将其传递给该回调,例如:
function my_enqueue($hook) {
wp_enqueue_script( \'ajax-script\', plugins_url( \'/js/my_query.js\', __FILE__ ), array(\'jquery\'));
if( is_single() ) {
// in javascript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script(
\'ajax-script\',
\'ajax_object\',
array( \'is_single\' => true )
);
}
}
add_action( \'wp_enqueue_scripts\', \'my_enqueue\' );
然后,您的ajax请求将包括
ajax_object.is_single
作为查询参数的一部分,如
this example from the Codex, 已通过
ajax_object.we_value
通过as
whatever
jQuery(document).ready(function($) {
var data = {
action: \'my_action\',
whatever: ajax_object.we_value // We pass php values differently!
};
// We can also pass the url value separately from ajaxurl for front end AJAX implementations
jQuery.post(ajax_object.ajax_url, data, function(response) {
alert(\'Got this from the server: \' + response);
});
});
然后,您的回调可以通过访问数据
$_POST
.