Odpowiedzi:
get_page()
aby zwrócić $post
obiekt strony statycznej:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Podobnie możesz użyć, get_post()
aby zwrócić $post
obiekt postu:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
Najpierw użyj , potem możesz użyćthe_content();
apply_filters( 'the_content', $post_object->post_content );
aby uzyskać treść postu poza pętlą, możesz napisać coś takiego
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Jeśli treść zawiera skróty, należy użyć:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
innych niż powiedzenie: „Może być powolne” i „Możesz po prostu użyć funkcji wywoływanej przez krótki kod”. Powody te dotyczą tylko najbardziej trywialnych dla najprostszych scenariuszy. Nie udaje się, gdy shortcode jest generowany gdzie indziej, lub jeśli jest wiele skrótów lub skrótów zmieszanych z inną zawartością i znacznikami. Bez ważnego powodu nie zgadzam się z tym stwierdzeniem, którego należy unikać do_shortcode
. To pachnie jak przedwczesna optymalizacja .
Dla kompletności, w oparciu o powyższy komentarz Tima i zainspirowany artykułem Stephena Harrisa , rozwiązaniem umożliwiającym użycie the_content()
jest:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
W związku z tym filtry są stosowane (wstawiane akapity itp.) I działają skróty.
Ponieważ znasz swój docelowy identyfikator posta (302), przydatna może być ta skrócona składnia, której możesz użyć poza pętlą (chociaż jej wydajność jest prawie taka sama jak w każdej innej metodzie alternatywnej :)
echo(get_post_field('post_content',302));
Możesz użyć tej get_post_data()
funkcji, aby dostać się poza pętlę. Umieść ten kod w functions.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
a następnie dodaj ten fragment kodu, aby uzyskać większą kontrolę nad procesem
<?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
?>
Jak już wspomniano, możesz użyć rozwiązania z get_post
i $post_object->post_content
, ale nie zapomnij dodać czeku przed użyciem tego obiektu postu:
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 );
Możesz po prostu wywołać get_the_content (postId)
<?php echo get_the_content($postId); ?>
użyj wp_reset_postdata();
go będzie działać .. (edytowane)
<?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 może być „post”, „page” lub niestandardowym typem posta. Tutaj p = 302 to identyfikator twojego posta. Mam nadzieję, że zadziała.
query_posts
chyba że musisz zepsuć funkcje strony. Zawsze używaj WP_Query
lub get_posts
do niestandardowych zapytań :-)
pre_get_posts
filtr i the_post
. Tyle szczegółów.
możesz umieścić treść w kategorii X i użyć zapytania_post przedtem w następujący sposób:
<?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/…