get_queried_object_id in AJAX

时间:2019-02-20 作者:lezuduhizu

谁能告诉我如何从AJAX文件中获取get\\u queryed\\u object\\u id?

我尝试的是:

$object_id = get_queried_object_id();
print_r($object_id); die();
// Outputs 0

global $wp_query;
$object_id = $wp_query->get_queried_object_id();
print_r($object_id); die(\'\');
// Outputs 0
据我所知,我无法得到get_queried_object_id 在AJAX中,那么我应该如何以正确的方式获得它呢?

更新:的输出global $wp_query;var_dump($wp_query);exit;

["queried_object"]=>
  NULL
  ["queried_object_id"]=>
  NULL
  ["request"]=>
  NULL
  ["posts"]=>
  NULL
  ["post_count"]=>
  int(0)
  ["current_post"]=>
  int(-1)
  ["in_the_loop"]=>
  bool(false)
  ["post"]=>
  NULL
  ["comments"]=>
  NULL
  ["comment_count"]=>
  int(0)
  ["current_comment"]=>
  int(-1)
  ["comment"]=>
  NULL
  ["found_posts"]=>
  int(0)
  ["max_num_pages"]=>
  int(0)
  ["max_num_comment_pages"]=>
  int(0)
  ["is_single"]=>
  bool(false)
  ["is_preview"]=>
  bool(false)
  ["is_page"]=>
  bool(false)
  ["is_archive"]=>
  bool(false)
  ["is_date"]=>
  bool(false)
  ["is_year"]=>
  bool(false)
  ["is_month"]=>
  bool(false)
  ["is_day"]=>
  bool(false)
  ["is_time"]=>
  bool(false)
  ["is_author"]=>
  bool(false)
  ["is_category"]=>
  bool(false)
  ["is_tag"]=>
  bool(false)
  ["is_tax"]=>
  bool(false)
  ["is_search"]=>
  bool(false)
  ["is_feed"]=>
  bool(false)
  ["is_comment_feed"]=>
  bool(false)
  ["is_trackback"]=>
  bool(false)
  ["is_home"]=>
  bool(false)
  ["is_404"]=>
  bool(false)
  ["is_embed"]=>
  bool(false)
  ["is_paged"]=>
  bool(false)
  ["is_admin"]=>
  bool(false)
  ["is_attachment"]=>
  bool(false)
  ["is_singular"]=>
  bool(false)
  ["is_robots"]=>
  bool(false)
  ["is_posts_page"]=>
  bool(false)
  ["is_post_type_archive"]=>
  bool(false)
  ["query_vars_hash":"WP_Query":private]=>
  bool(false)
  ["query_vars_changed":"WP_Query":private]=>
  bool(true)
  ["thumbnails_cached"]=>
  bool(false)
  ["stopwords":"WP_Query":private]=>
  NULL
  ["compat_fields":"WP_Query":private]=>
  array(2) {
    [0]=>
    string(15) "query_vars_hash"
    [1]=>
    string(18) "query_vars_changed"
  }
  ["compat_methods":"WP_Query":private]=>
  array(2) {
    [0]=>
    string(16) "init_query_flags"
    [1]=>
    string(15) "parse_tax_query"
  }
}

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好吧,让我们从试着理解开始,什么get_queried_object 函数执行。根据itsCodex page:

检索当前查询的对象。例如:

如果您在一篇文章中,它将返回post对象如果您在一个页面中,它将返回page对象如果您在存档页面中,它将返回post类型对象如果您在类别存档中,它将返回category对象如果您在作者存档中,它将返回author对象等,此函数返回应根据此请求的URL查询当前请求的对象。

但是AJAX调用是其他独立的请求。如果您使用AJAX API, 您应该这样做,然后创建一个请求wp-admin/admin-ajax.php 文件因此,没有为该请求查询对象。

如果在AJAX函数中需要查询的对象,那么必须在JS中发出的请求中传递它。

比如说,我们在一个帖子页面上。这个get_queried_object 函数返回该对象。我们想用AJAX执行一些操作,我们需要在该操作中使用post对象。在这种情况下,您必须:

将查询对象的ID传递给JS脚本

相关推荐

Ajax is not working in a loop

我试图使用ajax显示与所选类别相关的数据。它仅适用于最后选定的术语,而不适用于所有选定的术语。任何帮助都将不胜感激。var selected_cat = $(\'#my-categorychecklist input:checked\').map(function() { return this.value }).get(); $(document).ready( function () { var getid = $(\'#my