web-dev-qa-db-fra.com

Obtenir du contenu de publication en dehors de la boucle

Y at-il un moyen d'obtenir le contenu d'un autre en dehors de la boucle? L'ID est 302 et j'ai besoin d'afficher le contenu de cela sur une autre page.

21
Rob

Vous pouvez utiliser get_page() pour renvoyer l'objet $post d'une page statique:

$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;

Modifier

De même, vous pouvez utiliser get_post() pour retourner l'objet $post d'une publication:

$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
38
Chris_O

pour obtenir le contenu du message en dehors de la boucle, vous pouvez écrire quelque chose comme ça

global $post;
$content = $post->post_content;

if ( !empty( $content ) ) :
    echo $content;
endif;
6
Aamer Shahzad

Si votre contenu comprend des codes courts, vous devez utiliser:

$post_id = 22;        
$post_object = get_post( $post_id );        
echo do_shortcode( $post_object->post_content );
3
DSI_ClasH

Pour plus de précision, inspiré de de l'article de Stephen Harris, basé sur le commentaire de Tim ci-dessus , la solution permettant d'utiliser the_content() est la suivante:

$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );

Et donc les filtres sont appliqués (les paragraphes seront insérés, etc.) et les codes courts fonctionnent.

1
Jon

Puisque vous connaissez votre ID de publication cible (302), vous pouvez trouver utile cette syntaxe abrégée que vous pouvez utiliser en dehors de la boucle (bien que ses performances soient sensiblement les mêmes que dans toute autre méthode alternative :)

echo(get_post_field('post_content',302));
0
E. Serrano

Comme vous l'avez dit, vous pouvez utiliser la solution avec get_post et $post_object->post_content, mais n'oubliez pas d'ajouter une vérification avant d'utiliser cet objet de publication:

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 );
0
Olga Farber

Vous pouvez utiliser la fonction get_post_data() pour publier en dehors de la boucle. Placez ce code dans functions.php

function get_post_data($postId) {
    global $wpdb;
    return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}

puis ajoutez cet extrait pour plus de contrôle sur le processus

<?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
?>
0
Zohair Baloch