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.
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;
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;
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;
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 );
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.
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));
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 );
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
?>