Gibt es eine Möglichkeit, den Inhalt von einem anderen außerhalb der Schleife abzurufen? Die ID lautet 302 und ich muss den Inhalt auf einer anderen Seite anzeigen.
get_page()
verwenden, um das $post
-Objekt einer statischen Seite zurückzugeben:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Ebenso können Sie get_post()
verwenden, um das $post
-Objekt eines Posts zurückzugeben:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
um den Inhalt des Posts außerhalb der Schleife zu erhalten, können Sie so etwas schreiben
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Wenn Ihre Inhalte Shortcodes enthalten, sollten Sie Folgendes verwenden:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
Um der Vollständigkeit willen, bauen Sie auf Tims obigen Kommentar auf und lassen Sie sich von Stephen Harris 'Artikel inspirieren. Die Lösung, die die Verwendung von the_content()
ermöglicht, lautet:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
Dadurch werden Filter angewendet (Absätze werden eingefügt usw.) und Shortcodes funktionieren.
Da Sie Ihre Ziel-Beitrags-ID (302) kennen, ist diese Syntax möglicherweise hilfreich, die Sie auch außerhalb der Schleife verwenden können (obwohl die Leistung fast dieselbe ist wie bei jeder anderen alternativen Methode :)
echo(get_post_field('post_content',302));
Sie können wie gesagt die Lösung mit get_post
und $post_object->post_content
verwenden, aber vergessen Sie nicht, ein Häkchen hinzuzufügen, bevor Sie dieses Beitragsobjekt verwenden:
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 );
Sie können die Funktion get_post_data()
verwenden, um Beiträge außerhalb der Schleife zu veröffentlichen. Platziere diesen Code in functions.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
fügen Sie dann dieses Snippet hinzu, um mehr Kontrolle über den Prozess zu erhalten
<?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
?>