函数
set_post_thumbnail( int|WP_Post $post, int $thumbnail_id )
描述
该WordPress函数可 给指定的文章设置特色图
参数
$post(int | WP_Post) (必需) 需要添加缩略图的文章ID或文章对象。
$thumbnail_id(int) (必需) 缩略图ID。
返回值
(int | bool)成功则为True,失败则为false。
猫斯基划重点
成功时,返回值是update_post_meta函数返回的新元字段ID;如果delete_post_meta成功,则返回TRUE。
该方法将在您第二次运行时返回false。
如果特色图像已经设置为您提供的附件ID,则该方法返回false,因为在不更改值的情况下update_post_meta返回false。
实例
以代码方式将上传的图像文件设置为缩略图:
/*
* $file is the path to your uploaded file (for example as set in the $_FILE posted file array)
* $filename is the name of the file
* first we need to upload the file into the wp upload folder.
*/
$upload_file = wp_upload_bits( $filename, null, @file_get_contents( $file ) );
i
f ( ! $upload_file['error'] ) {
// if succesfull insert the new file into the media library (create a new attachment post type).
$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_parent' => $post_id,
'post_title' => preg_replace( '/\.[^.]+$/', '', $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $post_id );
if ( ! is_wp_error( $attachment_id ) ) {
// if attachment post was successfully created, insert it as a thumbnail to the post $post_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( $post_id, $attachment_id );
}
}
猫斯基注解
| Uses | Description |
|---|---|
|
wp-includes/functions.php: absint() |
将值转换为非负整数 |
|
wp-includes/media.php: wp_get_attachment_image() |
获取表示图像附件的HTML img元素 |
|
wp-includes/post.php: update_post_meta() |
根据帖子ID更新文章元字段 |
|
wp-includes/post.php: delete_post_meta() |
删除指定文章ID的元字段。 |
|
wp-includes/post.php: get_post() |
根据文章ID或文章对象,获取文章数据 |
| Used By | Description |
|---|---|
|
wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php: WP_REST_Posts_Controller::handle_featured_media() |
根据请求参数确定特色图 |
|
wp-admin/includes/ajax-actions.php: wp_ajax_set_attachment_thumbnail() |
Ajax处理程序,用于设置附件的特色图 |
|
wp-admin/includes/ajax-actions.php: wp_ajax_set_post_thumbnail() |
Ajax处理程序,用于设置特色图 |
|
wp-includes/post.php: wp_insert_post() |
插入或更新帖子 |
|
wp-includes/class-wp-xmlrpc-server.php: wp_xmlrpc_server::mw_editPost() |
编辑帖子 |
|
wp-includes/class-wp-xmlrpc-server.php: wp_xmlrpc_server::mw_newPost() |
创建一个新帖子 |
|
wp-includes/class-wp-xmlrpc-server.php: wp_xmlrpc_server::_insert_post() |
|
修改记录
wordpress 3.1.0
源文件
wp-includes / post.php
function set_post_thumbnail( $post, $thumbnail_id ) {
$post = get_post( $post );
$thumbnail_id = absint( $thumbnail_id );
if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
if ( wp_get_attachment_image( $thumbnail_id, 'thumbnail' ) ) {
return update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
} else {
return delete_post_meta( $post->ID, '_thumbnail_id' );
}
}
return false;
}