Antworten:
get_page()
das $post
Objekt einer statischen Seite zurückgeben:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Auf ähnliche Weise können Sie get_post()
das $post
Objekt eines Posts zurückgeben:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
zuerst, danach können Siethe_content();
apply_filters( 'the_content', $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 Ihr Inhalt Shortcodes enthält, sollten Sie Folgendes verwenden:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
anderes zu vermeiden, als zu sagen: "Es könnte langsam sein" und "Sie können einfach die Funktion verwenden, die der Funktionscode aufruft." Diese Gründe gelten nur für die einfachsten Fälle. Es schlägt fehl, wenn der Shortcode an einer anderen Stelle generiert wird oder wenn mehrere Shortcodes vorhanden sind oder Shortcodes mit anderen Inhalten und Markups gemischt sind. Ohne zwingenden Grund würde ich der zu vermeidenden Aussage nicht zustimmen do_shortcode
. Das riecht nach vorzeitiger Optimierung .
Der Vollständigkeit halber, basierend auf Tims Kommentar oben und inspiriert von Stephen Harris 'Artikel , the_content()
lautet die Lösung, die die Verwendung von ermöglicht :
$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 nützlich, 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 die get_post_data()
Funktion 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
?>
Sie können, wie gesagt, die Lösung mit get_post
und verwenden $post_object->post_content
, 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 einfach get_the_content (postId) aufrufen.
<?php echo get_the_content($postId); ?>
benutze wp_reset_postdata();
es wird funktionieren .. (bearbeitet)
<?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();
?>
Der Posttyp kann "post", "page" oder Ihr benutzerdefinierter Posttyp sein. Hier ist p = 302 Ihre Beitrags-ID. Ich hoffe, es wird funktionieren.
query_posts
sei denn, Sie müssen die Seitenfunktionen unterbrechen. Verwenden Sie immer WP_Query
oder get_posts
für benutzerdefinierte Abfragen :-)
pre_get_posts
Filter und the_post
. So viele Details.
Sie können Inhalte in eine Kategorie X einfügen und zuvor query_post verwenden, während Sie wie folgt vorgehen:
<?php query_posts('cat=X&showposts=1'); ?>
<?php while (have_posts()) : the_post(); ?>
<?= get_the_content(); ?>
<?php endwhile; ?>
get_queried_object_id()
! developer.wordpress.org/reference/classes/wp_query/…