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

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

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

я не получил 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();

Для тех, у кого это до сих пор не работает, вам потребуется использовать какой-то 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 страницы
}
Удачи и приятного кодинга!

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