WordPress自动添加内容中第一张照片为封面的脚本

很烦每次写文章, 除了文章内的图片外, 还有手动添加封面照片.

写了个脚本, 逻辑是:

如果文章没有设置封面, 就使用文章内容里的第一张照片作为封面;
如果文章里完全没有任何照片, 就自动调用预先指定的一张默认照片

把以下代码加入functions.php里, 或者用插件添加进去.

function auto_featured_image() {
    global $post; 
    if (!has_post_thumbnail($post->ID) AND get_post_type($post->ID) == 'post' ) { //如果没有封面,并且是一篇文章
        $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" ); //获得文章内容里的第一张照片
         
		if ($attached_image) {  //如果获得成功,把它作为封面
			foreach ($attached_image as $attachment_id => $attachment) {
                   set_post_thumbnail($post->ID, $attachment_id);                  
			}
        }	else{ //如果获得失败,使用ID为240的那张照片为默认封面(照片的ID可以从媒体库网址里看到)
    			set_post_thumbnail($post->ID, 240);
				} 
    }
}
// 把它插入动作内
//add_action('the_post', 'auto_featured_image'); 这个是给旧的帖子用的
add_action('save_post', 'auto_featured_image');
add_action('draft_to_publish', 'auto_featured_image');
add_action('new_to_publish', 'auto_featured_image');
add_action('pending_to_publish', 'auto_featured_image');
add_action('future_to_publish', 'auto_featured_image');

随便放一张照片 (这篇文章里的第一张照片) 作为测试.

Leave A Comment

CAPTCHA ImageChange Image