¿Hay una manera de obtener el contenido de otro fuera del bucle? El ID es 302 y necesito mostrar el contenido de eso en otra página.
¿Hay una manera de obtener el contenido de otro fuera del bucle? El ID es 302 y necesito mostrar el contenido de eso en otra página.
get_page()
para devolver el objeto $post
de una página estática: $page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Del mismo modo, puedes usar get_post()
para devolver el objeto $post
de una publicación:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
para obtener el contenido de la publicación fuera del bucle, puedes escribir algo como esto
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Si su contenido incluye códigos cortos, debe usar:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
Para estar completo, a partir del comentario de Tim anterior e inspirado en el artículo de Stephen Harris , la solución que habilita el uso de the_content()
es:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
Y por lo tanto, los filtros se aplican (se insertarán párrafos, etc.) y los códigos cortos funcionan.
Ya que sabe su ID de publicación de destino (302), puede encontrar útil esta sintaxis abreviada que puede usar fuera del bucle (aunque su rendimiento es bastante similar al de cualquier otro método alternativo :)
echo(get_post_field('post_content',302));
Puedes usar la función get_post_data()
para obtener una publicación fuera del bucle. Coloque este código en functions.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
y luego agregue este fragmento para tener más control sobre el proceso
<?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
?>
Puede usar, como se dijo, la solución con get_post
y $post_object->post_content
, pero no olvide agregar un cheque antes de usar ese objeto de publicación:
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 );
Puede simplemente llamar a get_the_content (postId)
<?php echo get_the_content($postId); ?>
use wp_reset_postdata();
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 puede ser "post", "página" o tu tipo de post personalizado. Aquí p = 302 es tu ID de publicación. Espero que funcione.
puedes poner contenido en una categoría X y usar query_post antes de esta manera:
<?php query_posts('cat=X&showposts=1'); ?>
<?php while (have_posts()) : the_post(); ?>
<?= get_the_content(); ?>
<?php endwhile; ?>
Lea otras preguntas en las etiquetas loop post-content