Получить содержимое записи по ID
Как я могу получить содержимое записи по ID поста? Я пробовал использовать get_page('ID');
для отображения содержимого, но это не работает.

Это можно сделать несколькими способами. Вот два лучших варианта.
$post_id = 5// пример ID записи
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo do_shortcode( $content );// выполнение шорткодов
Другой метод
$content = get_post_field('post_content', $post_id);
echo do_shortcode( $content );// выполнение шорткодов
После предложения Pieter Goosen об использовании apply_filters
.
Вы можете использовать apply_filters
, если хотите, чтобы контент фильтровался другими плагинами. Таким образом, отпадает необходимость использовать do_shortcode
.
Пример
$post_id = 5// пример ID записи
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo apply_filters('the_content',$content);
//нет необходимости использовать do_shortcode, но контент может быть отфильтрован другими плагинами.
Если вы не хотите позволять другим плагинам фильтровать этот контент и вам нужна функция шорткода, то используйте do_shortcode
.
Если вам не нужны и шорткоды, то просто работайте напрямую с post_content
.

Привет, спасибо за вопрос. @PieterGoosen Так как мы получаем сырой контент
записи. Любые шорткоды, встроенные в запись, не будут обработаны. Поэтому мы делаем это самостоятельно с помощью do_shortcode

Лучшим решением было бы использовать apply_filters( 'the_content', $content );
, таким образом все фильтры, применяемые к the_content()
, такие как wpautop
и обработчик шорткодов, будут применены к $content
. ;-). Обратите внимание на множественное число filters

Оставлю здесь еще один нестандартный и некрасивый способ, который иногда может оказаться полезным. Конечно, предпочтительнее использовать методы с API-вызовами (get_post(), get_the_content(), ...).
global $wpdb;
$post_id = 123; // укажите нужный ID записи
$post_content_raw = $wpdb->get_var(
$wpdb->prepare(
"select post_content from $wpdb->posts where ID = %d",
$post_id
)
);
