get_posts不适用于post__in

时间:2017-08-27 16:52:13

标签: php wordpress

$lessons_id = get_post_meta( $post->ID, '_course-lessons-1', true );
$posts = get_posts( array( 'post_type' => 'courses', 'post__in' => array( $lessons_id ) ) );
foreach ($posts as $post) : setup_postdata( $post );
echo get_the_title();
endforeach;
wp_reset_postdata();

如果将变量放在post__in中不起作用,它只返回第一个值。但是让'post__in' => array (985,987,254)有效。我已经回应了变量,输出与985,987,254完全相同。

你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

我建议您使用WP_Query代替get_posts,您可以像post__in那样使用:

$posts = new WP_Query( array(
    'post_type' => 'courses',
    'post__in'  => $lessons_id,
) );

请记住$lessons_id变量应该是一个数组,如下所示:

$lessons_id = array( 985, 987, 254 );

答案 1 :(得分:0)

您使用true作为get_post_meta的第三个参数,这意味着您的返回值始终是单个值,而不是数组。尝试用以下代码替换您的第一行:

$lessons_id = get_post_meta( $post->ID, '_course-lessons-1', false );