Установка глобальной переменной $post с указанным ID для использования тегов шаблона
У меня есть функция, которая получает ID записей очень специфическим способом.
Мне нужно иметь возможность установить global $post
, чтобы использовать функции вроде the_content()
, которая не принимает ID в качестве параметра.
Как я могу это сделать?

Для работы с записями вне цикла попробуйте использовать:
get_post(post_id)
чтобы получить запись с определённым ID вне стандартного цикла WordPress. Когда вы используете эту функцию, глобальный объект $post будет содержать выбранную вами запись. Теперь вы можете получить содержимое записи с помощью:
$post->post_content
Подробнее в документации get_post на WordPress Codex

Вы можете использовать однострочное выражение для сброса глобального объекта поста.
setup_postdata( $GLOBALS['post'] =& $custom_post_object );
Когда вы завершаете работу с шаблоном или циклом, обязательно сбросьте глобальный пост, чтобы не нарушить работу других шаблонов ниже по стеку.
wp_reset_postdata();
Примечание: PHPCS со стандартами WordPress будет выдавать предупреждение о переопределении глобального поста, поэтому если вы используете стандарты WordPress, вам нужно отключить проверку для этой строки следующим образом:
setup_postdata( $GLOBALS['post'] =& $post ); //phpcs:ignore
