GET_POST_THMBIAN_ID/SET_POST_THMBILING不起作用

时间:2015-04-28 作者:user3449454

我有一个名为bookname的字段,根据我试图检查posttype = books 当书名匹配时,出于某种原因拉出标识get_post_thumbnail_id 即使图像存在,也不会拉出其id,因此不会设置图像。

$importbookname = get_field( \'bookname\' );
$allbookposts   = get_posts( array( 
    \'post_type\'     => \'books\',
    \'numberposts\'   => -1
) );

if( ! empty( $allbookposts ) ) {    
    foreach( $allbookposts as $importbookpost ) {
        $tempbookname = strip_tags( get_the_title( $importbookpost ) );

        if( $tempbookname == $importbookname ) {                                    
            $importbookcoverid = get_post_thumbnail_id( $importbookpost );                               
        }
    }

    unset( $importbookpost ); 
    set_post_thumbnail( $post_id, $importbookcoverid );
}

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

你需要打电话get_post_thumbnail_id() 使用ID 而不是post对象。

$importbookcoverid = get_post_thumbnail_id( $importbookpost->ID );
你应该没事的。

SO网友:Pieter Goosen

您正在将完整的post对象传递给get_post_thumbnail_id() 其中,您应该只使用post ID。您还应该在使用模板标记之前设置post数据

请参见WP_Post 查看可以在post对象中使用的所有可用属性

foreach( $allbookposts as $post ) {
    setup_postdata( $post );
    $tempbookname = strip_tags( get_the_title() );

    if( $tempbookname == $importbookname ) {                                    
        $importbookcoverid = get_post_thumbnail_id( $post->ID );                               
    }
}
wp_reset_postdata();
编辑有点太快了,您不需要将帖子ID传递给get_the_title()

结束

相关推荐