Obtener contenido de publicaciones fuera del bucle

20

¿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.

    
pregunta Rob 10.05.2012 - 12:44

10 respuestas

36

Puedes usar 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;

Editar

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;
    
respondido por el Chris_O 10.05.2012 - 13:15
5

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;
    
respondido por el Aamer Shahzad 14.09.2014 - 17:40
3

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 );
    
respondido por el DSI_ClasH 23.03.2014 - 18:29
1

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.

    
respondido por el Jon 23.05.2014 - 09:07
0

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));
    
respondido por el E. Serrano 24.06.2015 - 23:26
0

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
?>
    
respondido por el Zohair Baloch 08.02.2016 - 16:57
0

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 );
    
respondido por el Olga Farber 01.03.2017 - 08:22
-1

Puede simplemente llamar a get_the_content (postId)

<?php echo get_the_content($postId); ?>
    
respondido por el NiemBlackPine 20.04.2016 - 21:43
-2

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.

    
respondido por el Jahirul Islam Mamun 04.04.2015 - 08:20
-3

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; ?>
    
respondido por el Zakaria Elhariri 10.05.2012 - 13:20

Lea otras preguntas en las etiquetas