Yanıtlar:
get_page()
döndürmek için kullanabilirsiniz $post
:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Benzer şekilde, bir gönderinin nesnesini get_post()
döndürmek için kullanabilirsiniz $post
:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
Önce kullanın , ondan sonra kullanabilirsinizthe_content();
apply_filters( 'the_content', $post_object->post_content );
yazının içeriğini döngü dışına almak için buna benzer bir şey yazabilirsiniz
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
İçeriğiniz kısa kod içeriyorsa, şunları kullanmalısınız:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
, "Yavaş olabilir" ve "Sadece kısa kodun çağırdığı işlevi kullanabilirsiniz." Demekten kaçınmak için zorunlu bir neden sağlamaz . Bu nedenler sadece en basit senaryolar için en önemsiz olan için geçerlidir. Kısa kod başka bir yerde üretildiğinde veya birden fazla kısa kod veya başka içerik ve işaretlerle karıştırılmış kısa kodlar olduğunda başarısız olur. Zorlayıcı bir sebep olmadan, kaçınmak için ifadeye katılmıyorum do_shortcode
. Bu erken optimizasyon gibi kokuyor .
Tamamlanması için, Tim'in yukarıdaki yorumuna dayanarak inşa edilmiş ve Stephen Harris'in makalesinden esinlenerek , kullanımını sağlayan çözüm the_content()
şöyledir:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
Ve böylece filtreler uygulanır (paragraflar vb. Eklenir) ve kısa kodlar çalışır.
Hedef posta kimliğinizi (302) bildiğiniz için, döngüden kullanabileceğiniz bu kısa sözdizimini yararlı bulabilirsiniz (performansı diğer alternatif yöntemlerde olduğu gibi hemen hemen aynıdır) :)
echo(get_post_field('post_content',302));
get_post_data()
Döngünün dışına yazı almak için işlevi kullanabilirsiniz . Bu kodu functions.php dosyasına yerleştirin
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
ve daha sonra işlem üzerinde daha fazla kontrol sahibi olmak için bu pasajı ekleyin
<?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
?>
Dediğiniz gibi çözümü get_post
ve ile birlikte kullanabilirsiniz, $post_object->post_content
ancak bu yazı nesnesini kullanmadan önce bir onay eklemeyi unutmayın:
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 );
Basitçe get_the_content (postId) 'i arayabilirsiniz.
<?php echo get_the_content($postId); ?>
wp_reset_postdata();
işe yarayacak kullanın .. (düzenlendi)
<?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 "posta", "sayfa" veya özel yazı tipiniz olabilir. İşte p = 302 sizin kimliğinizdir .. Umarım işe yarar.
query_posts
Sayfa işlevlerini bozmanız gerekmedikçe asla kullanmayın . Her zaman kullanın WP_Query
veya get_posts
özel sorgular için :-)
pre_get_posts
Filtre de var ve the_post
. Çok fazla detay.
X kategorisine içerik koyabilir ve bu şekilde yapmadan önce query_post komutunu kullanabilirsiniz:
<?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/…