Получить WordPress опубликовать содержание по идентификатору

141

Как я могу получить пост в WordPress по идентификатору поста?

m3tsys
источник

Ответы:

177

Все просто

$my_postid = 12;//This is page id or post id
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
Bainternet
источник
85
Сокращение для конкретной области:$content = get_post_field('post_content', $my_postid);
Rarst
4
@ Bainternet Мне просто любопытно здесь ... какова роль $content = str_replace(']]>', ']]>', $content);? какова цель этого там?
Средний Джо
1
@AverageJoe его основной поиск и замена. При использовании the_content () контент фильтруется. Поскольку в приведенном выше примере контент был получен напрямую, автор использовал поиск и замену, чтобы сделать его безопасным.
Хариш Чухан
2
может быть, вам также нужен do_shortcode () как$content = do_shortcode(get_post_field('post_content', $my_postid));
cyptus
Есть ли способ сохранить "more_link"?
user2128576
126
echo get_post_field('post_content', $post_id);
realmag777
источник
61
лучше сделать это как echo apply_filters('the_content', get_post_field('post_content', $post_id));. Например, при использовании qTranslate вашего решения будет недостаточно.
Карел Аттл
4
Это лучший ответ, если цель состоит в том, чтобы получить содержимое публикации, как на странице редактирования WordPress.
mcont
Без кода из @KarelAttl разрывы строк там, где их нет. С кодом apply_filters он работал отлично.
Александр Таубенкорб
1
apply_filtersэто хороший вариант, но не подходит для моей текущей цели. Хорошо иметь оба варианта.
KnightHawk
25

Еще один способ получить пост в WordPress по идентификатору поста:

$content = apply_filters('the_content', get_post_field('post_content', $my_postid));

Для завершения этого ответа я также добавил метод 01 и метод 02 к этому ответу.

Метод 01 (кредит переходит на bainternet ):

$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);

Метод 02 (кредит переходит к realmag777 ):

$content = get_post_field('post_content', $my_postid);

Способ 03:

$content = apply_filters('the_content', get_post_field('post_content', $my_postid));

Прочитайте, что является лучшим / эффективным способом получения контента WordPress по идентификатору поста и почему? вопрос, чтобы получить представление о том, какой из них вы должны использовать из вышеупомянутых трех.

Ranuka
источник
0

Если вам нужно более одного поста, используйте get_posts(). Он оставляет основной запрос в покое и возвращает массив сообщений, которые легко зациклить.

DigitalDesignDj
источник