Что такое $post_id? Это глобальная переменная в WordPress?

28 мар. 2018 г., 05:51:46
Просмотры: 14.3K
Голосов: 10

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

Это глобальная переменная?

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

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

Mark Kaplun Mark Kaplun
28 мар. 2018 г. 06:40:50
Все ответы на вопрос 3
0
11

Нет, $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 записи. Но как вы его назовёте — не имеет значения.

28 мар. 2018 г. 06:26:17
0

$post_id не является глобальной переменной. $post — это глобальная переменная. Вы можете использовать:

global $post;
$post_id = $post->ID;
28 мар. 2018 г. 10:08:22
0

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

$postID = get_queried_object_id();

14 апр. 2020 г. 23:22:35