получить текущий идентификатор страницы внутри страницы плагина wordpress

Мне нужно получить текущий 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']);