当前位置: 首页>>技术问答>>正文


WordPress自动批量设置特色图像/缩略图(Featured Image)

问题:下面代码能够成功插入文章(post), 但是不能正常设置文章的Featured Image(特色图像/缩略图),代码如下:

en: How to  set featured image using wp_insert_post?

 

            // Auto post ( Unique File Date ).
            $postData = array(
                'post_category' => array( $Category ),
                'post_status' => $Post_Status,
                'post_type' => $Post_Type
            );
            $post_id = wp_insert_post( $postData );

            $getImageFile = 'http://localhost/Multisite/test2/wp-content/uploads/sites/4/Auto Post/twitter.png';

            $attach_id = wp_insert_attachment( $postData, $getImageFile, $post_id );
            require_once( ABSPATH . 'wp-admin/includes/image.php' );

            $attach_data = wp_generate_attachment_metadata( $attach_id, $getImageFile );

            wp_update_attachment_metadata( $attach_id, $attach_data );

            set_post_thumbnail( $post_id, $attach_id );

这是怎么回事呢?

最佳解决方案:

需要使用不同的$postData作为附件。
代码如下:

1. 先导入相关依赖:


require("/usr/share/nginx/html/xxxx". '/wp-load.php');  //注:/usr/share/nginx/html/xxxx是你的wordpress部署地址。
require_once( "/usr/share/nginx/html/xxxx" . '/wp-admin/includes/image.php' );

2. 然后按指定格式设置缩略图(特色图像):

$wp_filetype = wp_check_filetype( $getImageFile, null );

$attachment_data = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => sanitize_file_name( $getImageFile ),
    'post_content' => '',
    'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment_data, $getImageFile, $post_id );

 

只有这样正确设置附件插入函数wp_insert_attachment的参数,才能正确设置Featured Image。

 
3. 绑定缩略图附件到文章。


//$attach_data = wp_generate_attachment_metadata( $attach_id, $getImageFile );  //注:不需要!
//wp_update_attachment_metadata( $attach_id, $attach_data );  //注:不需要!
//"只需要下面这行就可了!!!!!!"
set_post_thumbnail( $post_id, $attach_id );

 

值得一提的是,上面的代码整理之后,结合wordpress函数

wp_insert_post

和wordpress函数:

 

 

set_post_thumbnail

 

就可以完成自动批量给wordpress插入文章并设置缩略图。

 

附1:wp_inset_post的参数说明

 

 

post = array(

'ID' => [ <post id> ] //需要更新的文章编号

'menu_order' => [ <order> ] //如果新文章是页面,设置显示顺序

'comment_status' => [ 'closed' | 'open' ] // 评论的状态,'closed'关闭评论.

'ping_status' => [ 'closed' | 'open' ] // ping的状态,'closed' 关闭 pingbacks和trackbacks

'pinged' => [ ? ] //该文章被ping到的地址

'post_author' => [ <user ID> ] //作者编号

'post_category' => [ array(<category id>, <...>) ] //文章归类数组

'post_content' => [ <the text of the post> ] //文章内容,必填

'post_date' => [ Y-m-d H:i:s ] //文章编辑日期

'post_date_gmt' => [ Y-m-d H:i:s ] //文章编辑GMT日期

'post_excerpt' => [ <an excerpt> ] //摘要信息

'post_name' => [ <the name> ] // (slug) 文章别名

'post_parent' => [ <post ID> ] //新文章的父文章编号

'post_password' => [ ? ] //文章浏览密码

'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' ] //新文章的状态

'post_title' => [ <the title> ] //文章标题,必填

'post_type' => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] //文章类型:文章、页面、链接、菜单、其他定制类型

'tags_input' => [ '<tag>, <tag>, <...>' ] //标签字符串

'to_ping' => [ ? ] //该文章需要ping到的地址

'tax_input' => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) ) ] // 附加注释数组 );

 

需要特别说明的是,参宿tags_input是直接填写标签中文(或英文)即可,数据wp_inset_post会通过wordpress数据看来做去重并转化为关联ID。

 

本文由《纯净的天空》整理自网路。

 

【参考文献】

[1] http://stackoverflow.com/questions/28166651/set-featured-image-using-wp-insert-post

[2] http://www.cnblogs.com/xbdeng/p/5545180.html

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/1117.html,未经允许,请勿转载。