Respostas:
get_page()
para retornar o $post
objeto de uma página estática:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Da mesma forma, você pode usar get_post()
para retornar o $post
objeto de uma postagem:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
primeiro, depois disso, você pode usarthe_content();
apply_filters( 'the_content', $post_object->post_content );
para obter o conteúdo da postagem fora do loop, você pode escrever algo como isto
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Se o seu conteúdo incluir códigos de acesso, você deve usar:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
além de dizer: "Pode ser lento" e "Você pode apenas usar a função que o código curto chama". Esses motivos são válidos apenas para os cenários mais triviais para os mais simples. Ele falha quando o código de acesso é gerado em outro lugar, ou se houver vários códigos de acesso ou códigos de acesso misturados com outro conteúdo e marcação. Sem uma razão convincente, eu discordaria da afirmação a evitar do_shortcode
. Isso cheira a otimização prematura .
Para completar, com base no comentário de Tim acima e inspirado no artigo de Stephen Harris , a solução que permite o uso the_content()
é:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
E, portanto, os filtros são aplicados (parágrafos serão inseridos etc.) e os códigos de acesso funcionam.
Como você conhece seu ID de postagem de destino (302), você pode achar útil essa sintaxe abreviada que pode ser usada fora do loop (embora seu desempenho seja praticamente o mesmo que em qualquer outro método alternativo :)
echo(get_post_field('post_content',302));
Você pode usar a get_post_data()
função para postar fora do loop. Coloque este código em functions.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
e adicione este trecho para ter mais controle sobre o processo
<?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
?>
Você pode usar, como dito, a solução com get_post
e $post_object->post_content
, mas não se esqueça de adicionar uma verificação antes de usar esse objeto de postagem:
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 );
Você pode simplesmente chamar get_the_content (postId)
<?php echo get_the_content($postId); ?>
usá- wp_reset_postdata();
lo funcionará .. (editado)
<?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 pode ser "post", "page" ou seu tipo de postagem personalizado. Aqui p = 302 é o seu ID de postagem. Espero que funcione.
query_posts
menos que precise interromper as funcionalidades da página. Sempre use WP_Query
ou get_posts
para consultas personalizadas :-)
pre_get_posts
filtro e the_post
. Tantos detalhes.
você pode colocar o conteúdo em uma categoria X e usar query_post antes, desta forma:
<?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/…