Відповіді:
get_page()
для повернення $post
об'єкта статичної сторінки:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Так само ви можете використовувати get_post()
для повернення $post
об'єкта публікації:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
Спершу користуйтеся , після цього можете скористатисяthe_content();
apply_filters( 'the_content', $post_object->post_content );
щоб отримати вміст публікації поза циклом, ви можете написати щось подібне
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Якщо ваш вміст включає шорт-коди, ви повинні використовувати:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
крім того, щоб сказати: "Це може бути повільно" та "Ви можете просто використовувати функцію, яку викликає короткий код". Ці причини справедливі лише для найбільш тривіальних для найпростіших сценаріїв. Він не вдається, коли короткий код генерується десь в іншому місці або якщо є кілька шорткодів, або шорткоди, змішані з іншим вмістом і розміткою. Без поважних причин я не погоджуюся з твердженням, яке слід уникати do_shortcode
. Це пахне передчасною оптимізацією .
Для повноти, спираючись на коментар Тіма вище та натхненний статтею Стівена Харріса , рішення, яке дозволяє використовувати the_content()
:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
А значить, застосовуються фільтри (абзаци будуть вставлені і т. Д.) І короткі коди працюють.
Оскільки ви знаєте свій ідентифікатор цільової публікації (302), вам може бути корисний цей скорочений синтаксис, який ви можете використовувати з циклу (хоча його ефективність майже однакова, як і в будь-якому іншому альтернативному методі :)
echo(get_post_field('post_content',302));
Ви можете використовувати get_post_data()
функцію, щоб отримати повідомлення поза циклом. Розмістіть цей код у function.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
а потім додайте цей фрагмент для більшого контролю над процесом
<?php $data = get_post_data(302);
echo $data->post_date; // post date
echo $data->post_title; // post title
echo $data->post_content; // post content
echo $data->comment_count; // comments number
?>
Ви можете використовувати рішення, як було сказано, за допомогою get_post
та $post_object->post_content
, але не забудьте додати чек, перш ніж використовувати цей об’єкт поштового зв’язку:
function get_post_content( $post_id = null ) {
$post_object = get_post( $post_id );
if ( ! $post_object ) { return ''; }
//else
return apply_filters('the_content', $post_object->post_content);
}
echo get_post_content( $other_post_id );
Ви можете просто зателефонувати get_the_content (postId)
<?php echo get_the_content($postId); ?>
використовувати wp_reset_postdata();
це буде працювати .. (відредаговано)
<?php
$args = array(
'post_type' => 'posttype',
'p' => 'post_id'
);
$the_query = new WP_Query( $args );
if( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif;
wp_reset_postdata();
?>
posttype може бути "повідомлення", "сторінка" або ваш власний тип публікації. Тут p = 302 - ваш ідентифікатор повідомлення. Сподіваюся, він спрацює.
query_posts
якщо вам не потрібно порушувати функції сторінки. Завжди використовуйте WP_Query
або get_posts
для користувацьких запитів :-)
pre_get_posts
фільтр і the_post
. Стільки деталей.
ви можете помістити вміст у категорію X і використовувати query_post раніше, як це:
<?php query_posts('cat=X&showposts=1'); ?>
<?php while (have_posts()) : the_post(); ?>
<?= get_the_content(); ?>
<?php endwhile; ?>
get_queried_object_id()
! developer.wordpress.org/reference/classes/wp_query/…