index.php中的wp_get_recent_posts

时间:2017-04-20 11:47:44

标签: wordpress posts

我需要在template-part !!

中使用the_title()和其他函数

在我的index.php中,我有:

$args=array(
    'orderby' => 'post_date',
    'order' => 'DESC'
);
$recent_posts =wp_get_recent_posts( $args,ARRAY_A);
foreach ($recent_posts as $post) {

    setup_postdata($post);
    echo "<h1>$post[ID]</h1>";
    the_title();
    get_template_part( 'template-parts/post/content', 'list' );
}

回声显示正确的后ID。 但是,the_title():总是显示“hello world”(第一篇文章), 因此,我的模板部分只有第一个Post Object,它不是来自$ recent_posts。

出了什么问题?

4 个答案:

答案 0 :(得分:0)

尝试下面的foreach代码:

foreach ($recent_posts as $post) {

setup_postdata($post);
echo "<h1>$post[ID]</h1>";
echo $post["post_title"];
get_template_part( 'template-parts/post/content', 'list' );
}

答案 1 :(得分:0)

echo $post["post_title"];

更多信息: https://codex.wordpress.org/Function_Reference/wp_get_recent_posts

答案 2 :(得分:0)

首先,在帖子查询中传递更多参数,例如

'post_type'        => 'post',
'post_status'      => 'publish',

澄清您希望显示帖子的帖子类型。 在循环内部改变,

the_title();

成,

$post->post_title or $post['post_title']

取决于通过对象或数组的数据。

我希望这对你有用。

答案 3 :(得分:0)

好的,我找到了。 对于那些理解我真实问题的人:

不要使用wp_get_recent_posts。 代替:

$the_query = new WP_Query( 'posts_per_page=10' ); 
while ($the_query -> have_posts()) {
    $the_query -> the_post();
    get_template_part( 'template-parts/post/content', 'list' );
}