从循环之外获取帖子内容

时间:2012-05-10 作者:Rob

有没有办法从循环之外的其他人那里获取内容?ID是302,我需要在另一个页面上显示它的内容。

11 个回复
最合适的回答,由SO网友:Chris_O 整理而成

您可以使用get_page() 返回$post 静态页面的对象:

$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
编辑类似地,您可以使用get_post() 返回$post 帖子的对象:

$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;

SO网友:Aamer Shahzad

要在循环之外获取帖子的内容,可以编写如下内容

global $post;
$content = $post->post_content;

if ( !empty( $content ) ) :
    echo $content;
endif;

SO网友:DSI_ClasH

如果您的内容包含短代码,则应使用:

$post_id = 22;        
$post_object = get_post( $post_id );        
echo do_shortcode( $post_object->post_content );

SO网友:Loosie94

我很惊讶没有人这么说:

$pageID = 302;

echo get_the_content(null, false, $pageID);
效果很好!:)

SO网友:Jon

为完整起见,以Tim的上述评论为基础Stephen Harris\'s article, 支持使用的解决方案the_content() 是:

$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
因此,可以应用过滤器(插入段落等)和短代码。

SO网友:Olga Farber

如前所述,您可以将解决方案用于get_post$post_object->post_content, 但在使用post对象之前,不要忘记添加检查:

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

SO网友:E. Serrano

由于您知道自己的目标帖子ID(302),您可能会发现这种可以在循环外使用的速记语法很有用(尽管它的性能与任何其他替代方法中的性能几乎相同:)

echo(get_post_field(\'post_content\',302));

SO网友:Zohair Baloch

您可以使用get_post_data() 函数将post置于循环外部。将此代码放入函数中。php

function get_post_data($postId) {
    global $wpdb;
    return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
然后添加此代码段以对流程进行更多控制

<?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
?>

SO网友:NiemBlackPine

您只需调用get\\u the\\u content(postId)

<?php echo get_the_content($postId); ?>

SO网友:Jahirul Islam Mamun

使用wp_reset_postdata(); 它会起作用的。。(已编辑)

<?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可以是“post”、“page”或自定义的post类型。这里p=302是您的帖子id。。希望它能起作用。

SO网友:Zakaria Elhariri

您可以将内容放在类别X中,并在此之前使用query\\u post,如下所示:

    <?php query_posts(\'cat=X&showposts=1\'); ?>
    <?php while (have_posts()) : the_post(); ?>
          <?= get_the_content(); ?>
    <?php endwhile; ?>

结束

相关推荐

Thesis Theme Custom Loop

我正在使用论文主题构建一个网站,并使用论文自定义循环API和自定义WP\\U查询。当我在单页上执行此操作时,它不会显示评论表单。如何在单个帖子页面上添加评论表单