Как получить ID текущей страницы вне цикла?

17 сент. 2014 г., 16:55:31
Просмотры: 281K
Голосов: 59

Как получить ID текущей страницы вне цикла?

9
Комментарии

Странно, как вы используете этот код, что вы пробовали. Какие ошибки вы получаете. На данный момент сложно вам помочь, и все ответы будут стрельбой в темноту. Пожалуйста, внесите [правку]

Pieter Goosen Pieter Goosen
17 сент. 2014 г. 17:06:45

<?php global $post; $thePostID=$post->ID;?> <?php elseif($thePostID==35) : ?>

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 сент. 2014 г. 17:12:55

Пожалуйста, внесите [правку] со всем дополнительным кодом/информацией. Не используйте раздел комментариев для информации, которая должна быть в вашем вопросе :-)

Pieter Goosen Pieter Goosen
17 сент. 2014 г. 17:14:17

Ваш пост был автоматически отмечен как низкого качества, пожалуйста, соблюдайте мои требования выше :-)

Pieter Goosen Pieter Goosen
17 сент. 2014 г. 17:15:23

я не получаю никаких ошибок, на самом деле я хочу отобразить карту Google на своей странице, но карта не отображается...

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 сент. 2014 г. 17:17:52

в header.php я использую условие if else для отображения в соответствии с идентификаторами страниц

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 сент. 2014 г. 17:18:35

Как я уже говорил, вся эта информация должна быть включена в ваш вопрос, а не в раздел комментариев. Пожалуйста, [отредактируйте] ваш вопрос

Pieter Goosen Pieter Goosen
17 сент. 2014 г. 17:19:52

Уважаемый @Программист, пожалуйста, прочитайте [как спрашивать]. Вы получили автоматические предупреждения о качестве вашего сообщения. Вам были предложены варианты решения проблемы. Пожалуйста, постарайтесь исправить это, чтобы ваш вопрос мог оставаться открытым и вы не получали минусы. Спасибо.

kaiser kaiser
12 янв. 2015 г. 17:26:52

Вы уже приняли ответ, но правильный ответ (возможно, это дубликат вопроса) находится здесь: http://wordpress.stackexchange.com/a/109468/21376

s_ha_dum s_ha_dum
19 авг. 2015 г. 17:00:47
Показать остальные 4 комментариев
Все ответы на вопрос 5
5
89

Вы можете просто сделать,

$page_id = get_queried_object_id();
7 мая 2018 г. 19:44:53
Комментарии

Это должно быть отмечено как ответ...

Lezz Lezz
28 янв. 2020 г. 11:59:27

Согласен. Это должен быть ответ.

CJWEB CJWEB
8 мар. 2020 г. 06:44:35

Определенно это должен быть правильный ответ. Я пытаюсь получить текущий id записи или страницы, и это единственный способ, который дает мне правильный Id без необходимости жестко кодировать условия.

Felipe Rugai Felipe Rugai
22 мая 2020 г. 18:38:11

Отлично, правильный ответ для меня

Nuno Sarmento Nuno Sarmento
20 нояб. 2020 г. 00:41:38

Спасибо. Отличный ответ.

return_false return_false
7 июн. 2021 г. 18:05:58
5
85

Попробуйте

global $post;
echo $post->ID;

или (я не знаю, в чем разница)

global $wp_query;
echo $wp_query->post->ID;
17 сент. 2014 г. 16:58:39
Комментарии

я пробовал все способы, найденные в Google, но ничего не получилось

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 сент. 2014 г. 17:01:05

трудно понять, что именно вы "нашли" :) убедитесь, что код находится в функции, что вы вызываете эту функцию и начните отладку с вывода чего-то другого, что должно быть видимым...

caramba caramba
17 сент. 2014 г. 17:04:55

я не получил id, используя функцию, а "способы" - это global $wp_query; $thePostID = $wp_query->post->ID;

global $post; $thePostID = $post->ID;

global $wp_query; $page = $wp_query->get_queried_object(); $page_id = $page->ID;

$page_id = get_queried_object_id();

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 сент. 2014 г. 17:09:39

первый был правильным...

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 сент. 2014 г. 17:39:18

Эти решения дадут вам ID страницы только если использовать их до начала Цикла. Как только Цикл начинается, $post будет установлен для каждой записи в Цикле по очереди.

s_ha_dum s_ha_dum
19 авг. 2015 г. 16:59:14
2

Для тех, у кого это до сих пор не работает, вам потребуется использовать какой-то add_action (вы можете выбрать, какой именно хотите использовать). В моем примере это вернет ID текущей страницы без каких-либо проблем, независимо от того, находится ли код в папке плагина, в файле functions.php или где-то еще.

add_action('template_redirect', 'showid');

function showid(){
    global $wp_query;
    $theid = intval($wp_query->queried_object->ID);
    echo $theid; // выводим ID страницы
}

Удачи и приятного кодинга!

6 авг. 2021 г. 13:14:53
Комментарии

Почему этот ответ был отрицательно оценен?

crs1138 crs1138
22 окт. 2021 г. 13:09:21

Согласен, это единственное решение, которое сработало для меня. Мне нужно было проверить, находится ли текущая страница или запись в определенной категории и выполнить принудительное перенаправление, если это так, но сделать это до начала цикла. Этот хук действия был именно тем, что мне требовалось, чтобы запрашиваемый объект заработал.

Kai Qing Kai Qing
20 сент. 2024 г. 22:51:09
2

Вне цикла:

$current_page = get_page_by_path($_SERVER['REQUEST_URI']);
            
if(isset($current_page->ID)) {
    $current_page_id = $current_page->ID;
}
28 июн. 2022 г. 17:02:41
Комментарии

Похоже, это должно работать, но я думаю, что другие подходы проще. И меня беспокоит, что это может вызвать запрос к базе данных.

Rup Rup
30 июн. 2022 г. 00:51:01

Это не будет работать при создании новой страницы.

Tahi Reu Tahi Reu
7 апр. 2023 г. 12:42:36
0

За пределами цикла:

  //не забудьте вызвать wp_reset_postdata(); после цикла while
  // иначе вы получите неправильный id.
   global $post;
   $post_id =  $post->ID;

Внутри цикла:

while (have_posts()) {
    the_post();
    $post_id = the_ID();
}
3 мар. 2022 г. 12:45:38