Получить текущий идентификатор страницы внутри страницы плагина 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']);