批量/批量将特色图片分配给帖子

时间:2014-06-10 作者:kat

我有一个带有post ID和附件ID的文本文件,如下所示:

post_id,attachment_id
post_id,attachment_id
post_id,attachment_id
post_id,attachment_id
然后我尝试在我的函数中使用一个函数。php文件如下:

function addimg() {
$fh = @fopen( dirname( __FILE__ ) . \'/addimg.txt\', \'r\' );

if ( $fh ) {
    while ( ( $line = fgets( $fh ) ) !== false ) {
        $ids = explode( \',\', $line );
        array_walk( $ids, \'trim\' );
        $postid = array_shift( $ids );
        set_post_thumbnail( $postid, $ids );
    }
}
}
add_action(\'wp_head\', \'addimg\');
但什么都没发生。

我用同样的程序add categories to posts 这是可行的。我还尝试手动将特色图像添加到帖子中,如下所示:

function thumb() {

set_post_thumbnail( 1, 1);

}
add_action(\'wp_head\', \'thumb\');
这是可行的。

所以,我的知识太浅薄,无法理解为什么我所尝试的工作不起作用?

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

由于您没有太多编程经验,我将在这里发布一个现成的解决方案。我对你的代码看了很久,问题是array_shift, $ids 仍然是一个数组。set_post_thumbnail 应为和整数,而不是数组。你可以使用$ids[0] 作为第二个参数,但在我看来,以下是一个更干净的解决方案。

function wpse149149_addimg() {
    $fh = @fopen( dirname( __FILE__ ) . \'/addimg.txt\', \'r\' );

    if ( $fh ) {
        while ( ( $line = fgets( $fh ) ) !== false ) {
            $ids = explode( \',\', $line );
            array_walk( $ids, \'trim\' );
            set_post_thumbnail( $ids[0], $ids[1] );
        }
    }
}

add_action( \'wp_head\', \'wpse149149_addimg\' );

结束

相关推荐