Что такое $post_id? Это глобальная переменная в WordPress?
Как можно использовать $post_id
при выводе записей в single.php?
Это глобальная переменная?

Нет, $post_id
не является глобальной переменной. Вы можете посмотреть список глобальных переменных, создаваемых WordPress, здесь: https://codex.wordpress.org/Global_Variables
$post_id
— это просто распространённое соглашение об именовании переменной, которая содержит ID записи. В учебниках и примерах кода это показывает, что переменная должна содержать ID записи, но вам всё равно нужно где-то в коде задать её значение.
Если вы находитесь внутри Цикла, вы можете получить ID текущей страницы или записи в цикле с помощью $post_id = get_the_ID()
. Если вы находитесь вне Цикла и хотите получить ID текущего запрошенного поста или страницы, вы можете использовать $post_id = get_queried_object_id()
.
Ещё один способ получить ID записи — это в callback-функции хука. Например, в хуке post_thumbnail_size
callback-функция получает ID записи в качестве второго аргумента:
function wpse_299132_post_thumbnail_size( $size, $post_id ) {
return $size;
}
add_filter( 'post_thumbnail_size', 'wpse_299132_post_thumbnail_size', 10, 2 );
Но это просто имя, используемое в документации, чтобы было понятно, что содержит переменная. Вы можете называть её как угодно. Например, это тоже будет работать:
function wpse_299132_post_thumbnail_size( $size, $myPostId ) {
return $size;
}
add_filter( 'post_thumbnail_size', 'wpse_299132_post_thumbnail_size', 10, 2 );
$myPostId
— это второй аргумент, поэтому он будет содержать ID записи. Но как вы его назовёте — не имеет значения.

В некоторых случаях, например, когда вы находитесь за пределами цикла (The Loop), может потребоваться использовать
get_queried_object_id() вместо get_the_ID().
$postID = get_queried_object_id();
