如何以编程方式添加/分配或更改POST中的特色图像?

时间:2012-11-05 作者:Miloš Đakonović

我写了一个插件,它(除了其他功能外)可以根据现有内容发布帖子。每个帖子我都有一张图片-how to make them featured programmatically?

我执行以下操作:

$id =  wp_insert_post( $my_post );
wp_set_object_terms( $id, $cat_ids, \'category\' );
我希望下一步是插入$image(文件路径或URI)作为特色图像。怎样

提前谢谢。

4 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

尝试使用set_post_thumbnail().

假设您已经知道如何确定$post 要为其设置特征图像的(ID或对象),以及$thumbnail_id (ID)要设置为特征图像的图像:

set_post_thumbnail( $post, $thumbnail_id );

SO网友:Mridul Aggarwal

set_post_thumbnail 将允许从id设置1个附件到提供id的帖子。

如果您没有附件id或希望直接从url执行此操作,则必须先创建附件,请参阅wp_insert_attachment

您还可以使用media_sideload_image

SO网友:windyjonas

您可以使用wp_insert_attachment()wp_generate_attachment_metadata() 使图像成为帖子的附件。您可以使用set_post_thumbnail(). (它实际上只是一个自定义字段\\u缩略图\\u id。
类似于:

$attach_id   = wp_insert_attachment( $attachment, $filename, $post_id );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id,  $attach_data );
set_post_thumbnail( $post_id, $attach_id );

SO网友:Liz Eipe C

以编程方式设置特色图像。

function setFeaturedImages() {

$base = dirname(__FILE__);
$imgfile= $base.DS.\'images\'.DS.\'14\'.DS.\'Ascot_Anthracite-Grey-1.jpg\';
$filename = basename($imgfile);
$upload_file = wp_upload_bits($filename, null, file_get_contents($imgfile));
if (!$upload_file[\'error\']) {
    $wp_filetype = wp_check_filetype($filename, null );
    $attachment = array(
        \'post_mime_type\' => $wp_filetype[\'type\'],
        \'post_parent\' => 0,
        \'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', $filename),
        \'post_content\' => \'\',
        \'post_status\' => \'inherit\'
    );
$attachment_id = wp_insert_attachment( $attachment, $upload_file[\'file\'], 209 );

if (!is_wp_error($attachment_id)) {
    require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
    $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file[\'file\'] );
    wp_update_attachment_metadata( $attachment_id,  $attachment_data );
}

set_post_thumbnail( 209, $attachment_id );

}
}

有关详细说明,请参阅教程。http://www.pearlbells.co.uk/insert-udpate-wordpress-post-programmatically/

结束

相关推荐

POSTS_WHERE过滤器的自定义时间范围

我正在创建一个功能,显示浏览次数最多的帖子,并希望能够根据帖子的年龄显示帖子。修改查询并不是一个真正的问题。但由于我无法将任何参数传递给函数,因此无法修改“-30天”部分。function print_stuff($args) { add_filter( \'posts_where\', \'filter_where\'); $posts = new WP_query($args); remove_filter( \'posts_where\', \'fil