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


141

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

Ответы:


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;

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);

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 по идентификатору поста и почему? вопрос, чтобы получить представление о том, какой из них вы должны использовать из вышеупомянутых трех.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.