Получить текущий идентификатор страницы внутри страницы плагина 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\сор-контента\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. Если вы знаете, как это решить, мне нужна ваша поддержка. Спасибо заранее.

Ответ 1

get_the_ID(); or $post->ID; возвращает текущую страницу или сообщение в Wordpress.

Но вам нужно убедиться, что ваш пост сохранен в сообщении Wordpress Таблица. Другой мудрый вы не можете получить идентификатор, просто из-за этого а не запись в базе данных wordpress.

Если это статическая страница, и это не запись в сообщении Wordpress, то get_the_ID() ничего не возвращает.

Например: get_the_ID() не работал на страницах пост-архива, страницах администрирования в backend и т.д.

В соответствии с этим вопросом вы пытаетесь получить идентификатор страницы, являющейся страницей настроек подключаемого модуля или любой страницы архива.

UPDATE

Способ получения текущего идентификатора сообщения в wordpress

(1) global $post; $post->ID();

(2) global $wp_query; $post_id = $wp_query->get_queried_object_id();

(3) 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;
                }

ie get_the_ID() возвращает идентификатор текущего $post.

(5) get_query_var('page_id')

[он не будет работать, если мы используем довольно постоянную ссылку]
    https://codex.wordpress.org/Function_Reference/get_query_var

Ответ 2

Вы можете получить ID сообщения на текущей странице вне цикла, используя следующую технику:

global $wp_query;
$post_id = $wp_query->post->ID;

$post = get_post( $post_id );
$slug = $post->post_name;

Ответ 3

попробуйте использовать ниже код для получения идентификатора страницы

get_the_ID();

Ответ 4

Выбранный ответ работает, только если вы поместите его в цикл Wordpress. Снаружи это бесполезно.

Это работает повсюду:

global $wp_query;
$postID = $wp_query->post->ID;

Ответ 5

Я предполагаю, что это правильное решение:

$id = get_queried_object_id();

который равен:

function get_queried_object_id() {
    global $wp_query;
    return $wp_query->get_queried_object_id();
}

Ответ 6

Вы увидите все настройки и переменные в функции get_defined_vars():

var_dump(get_defined_vars());

В вашем случае вам нужно получить '_GET' и внутри 'post'... Код должен выглядеть следующим образом:

$tmp = get_defined_vars();
var_dump($tmp['_GET']['post']);