WordPress 自动设置特色图像缩略图

WordPress 自动设置特色图像缩略图

WordPress的特色图像是一个很实用的功能,可以在文章列表中为每篇文章添加一张缩略图。但特色图像需要在编辑文章时手动添加很不方便,下面的代码可自动将文章中的第一张图片设置为特色图像。

方法一:自动把文章中的第一张图片添加为缩略图

将下面的代码添加到当前主题的functions.php中:


//自动将文章中的第一张图片设置为特色图像。
function wpforce_featured() {
    global $post;
    $already_has_thumb = has_post_thumbnail($post->ID);
    if (!$already_has_thumb)  {
        $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);
            }
        }
    }
}  //end function
add_action('the_post', 'wpforce_featured');
add_action('save_post', 'wpforce_featured');
add_action('draft_to_publish', 'wpforce_featured');
add_action('new_to_publish', 'wpforce_featured');
add_action('pending_to_publish', 'wpforce_featured');
add_action('future_to_publish', 'wpforce_featured');

方法二:自动调用媒体库中的图片作为缩略图

将下面的代码添加到当前主题的functions.php中:

/* 自动调用媒体库中的图片作为缩略图
function wpforce_featured() {
    global $post;
    $already_has_thumb = has_post_thumbnail($post->ID);
    if (!$already_has_thumb)  {
        $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 {
            set_post_thumbnail($post->ID, '4178');//指定媒体库一张图片的 id
        }
    }
}  //end function
add_action('the_post', 'wpforce_featured');
add_action('save_post', 'wpforce_featured');
add_action('draft_to_publish', 'wpforce_featured');
add_action('new_to_publish', 'wpforce_featured');
add_action('pending_to_publish', 'wpforce_featured');
add_action('future_to_publish', 'wpforce_featured');

就能实现 WordPress 自动设置特色图像缩略图并且如果没有图片,就选取媒体库一张图片的功能。

查看后台文章列表,缩略图是否成功

要让你的主题支持特色图像必须在functions.php中加入以下代码:

if ( function_exists('add_theme_support') )add_theme_support('post-thumbnails');

post模板中调用:

<?php
if ( has_post_thumbnail() ) {// 检查帖子是否分配了帖子缩略图。
  the_post_thumbnail();
}
?>
<?php the_content(); ?>

可以调用不同尺寸的图片:

the_post_thumbnail();           // 无参数,默认调用Thumbnail
the_post_thumbnail('thumbnail');// Thumbnail(默认尺寸 150px150px max)
the_post_thumbnail('medium');   // Medium resolution(default300px300px max)
the_post_thumbnail('large');    // Large resolution(default640px640px max)
the_post_thumbnail('full');     // Full resolution(original size uploaded)
the_post_thumbnail( array(100,100) );//Other resolutions

总结
1、你如果再制作自己的主题,在调试中,可以尝试一个你喜欢的方法。
2、你的站点已经发表了很多文章,并且都启用发特色图像,要慎用,可能你选择的某一个代码功能会影响你已经发布的文章不能正常显示!
3、特色图像会占用大量的服务器空间,因为每张图片都会裁剪成多张大小不同的缩略图方便在不同的位置调用,最主要的是不支持外链。