Мне нужно получить текущий page id на плагине WordPress вне цикла.  И код, который я написал для получения текущего page id находится на моей странице плагина.  Я пробовал много кодов, но не работает 
 $page_object = get_queried_object(); $page_id = get_queried_object_id(); // "Dirty" pre 3.1 global $wp_query; $page_object = $wp_query->get_queried_object(); $page_id = $wp_query->get_queried_object_id(); 
Но это не работает для меня.
  global $post; echo "pageid: ".$post->ID; 
Это также не работает.
Когда я пытаюсь
  global $wp_query; $post_obj = $wp_query->get_queried_object(); $Page_ID = $post_obj->ID; echo $Page_ID; 
Затем появляется сообщение об ошибке
Неустранимая ошибка: вызовите функцию-член get_queried_object () для не-объекта в H: \ xampp \ htdocs \ wordpress \ wp-content \ plugins \ wpk \ wpk.php в строке 876
Когда я печатаю:
 global $wp_query; print_r($wp_query); 
то результат:
 WP_Query Object ( [query] => [query_vars] => Array ( ) [tax_query] => [meta_query] => [date_query] => [queried_object] => [queried_object_id] => [request] => [posts] => [post_count] => 0 [current_post] => -1 [in_the_loop] => [post] => [comments] => [comment_count] => 0 [current_comment] => -1 [comment] => [found_posts] => 0 [max_num_pages] => 0 [max_num_comment_pages] => 0 [is_single] => [is_preview] => [is_page] => [is_archive] => [is_date] => [is_year] => [is_month] => [is_day] => [is_time] => [is_author] => [is_category] => [is_tag] => [is_tax] => [is_search] => [is_feed] => [is_comment_feed] => [is_trackback] => [is_home] => [is_404] => [is_comments_popup] => [is_paged] => [is_admin] => [is_attachment] => [is_singular] => [is_robots] => [is_posts_page] => [is_post_type_archive] => [query_vars_hash] => [query_vars_changed] => 1 [thumbnails_cached] => [stopwords:WP_Query:private] => ) 
  Я не знаю, как это решить, как получить текущий page id Если вы знаете, как это решить, мне нужна ваша поддержка.  Заранее спасибо. 
 get_the_ID(); or $post->ID;  возвращает текущую страницу или сообщение в WordPress. 
Но вам нужно убедиться, что ваш пост сохранен в таблице сообщений WordPress. Иными словами, вы не можете получить идентификатор, просто потому, что это не запись в базе данных wordpress.
  Если это статическая страница, и это не запись в сообщении WordPress, get_the_ID() ничего не возвращает. 
Например : get_the_ID () не пошел на работу в пост-архивные страницы, страницы администрирования в бэкенде WordPress и т. Д.
Таким образом, в соответствии с этим вопросом вы пытаетесь получить идентификатор страницы, являющейся страницей настроек подключаемого модуля или любой страницы архива.
ОБНОВИТЬ
Метод получения текущего идентификатора сообщения в wordpress
  (1) global $post; $post->ID(); global $post; $post->ID(); 
  (2) global $wp_query; $post_id = $wp_query->get_queried_object_id(); global $wp_query; $post_id = $wp_query->get_queried_object_id(); 
  (3) global $wp_query; $post_id = $wp_query->post->ID; global $wp_query; $post_id = $wp_query->post->ID; 
  (4) get_the_ID(); 
[Рекомендуется, чтобы этот тег находился в пределах цикла. ]
видеть это
  function get_the_ID() { $post = get_post(); return ! empty( $post ) ? $post->ID : false; } 
т.е. get_the_ID () возвращает идентификатор текущего $ post.
  (5) get_query_var('page_id') 
  [он не будет работать, если мы используем довольно постоянную ссылку] 
  https://codex.wordpress.org/Function_Reference/get_query_var 
  Вы можете получить ID сообщения на текущей странице вне цикла, используя следующую технику: 
 global $wp_query; $post_id = $wp_query->post->ID; $post = get_post( $post_id ); $slug = $post->post_name; 
попробуйте использовать код ниже, чтобы получить идентификатор страницы
 get_the_ID(); 
Выбранный ответ работает, только если вы положили его в цикл WordPress . Снаружи это бесполезно.
Это работает повсюду:
 global $wp_query; $postID = $wp_query->post->ID; 
Я думаю, что это правильное решение:
 $id = get_queried_object_id(); 
который равен:
 function get_queried_object_id() { global $wp_query; return $wp_query->get_queried_object_id(); } 
  Вы увидите все настройки и переменные в функции get_defined_vars() : 
 var_dump(get_defined_vars()); 
В вашем случае вам нужно получить «_GET» и «post» … Код должен выглядеть так:
 $tmp = get_defined_vars(); var_dump($tmp['_GET']['post']);