图片可以为网站增加很多可读性,WordPress 内置了强大的缩略图系统,可以根据设置的尺寸自动输出压缩后的图片,这样就不会因为不小心上传了比较大的图片而导致网站打开速度慢了。
然而有时候,我们在文章上上传了图片,却忘记了上传缩略图,这时候有些需要显示缩略图的主题显示可能就不正常了,这当然是我们不希望看到的。下面的一段代码可以自动提取文章里面的第一张图片作为文章的缩略图。
具体实现思路是,首先判断是不是自动保存的修订版本,然后判断当前编辑的是否为文章,最后判断是否手动设置了缩略图,如果都不是,调取文章附件中的第一张图片,设置为文章的缩略图。
function zhiku_automatic_featured_image( $post_id ) { if ( wp_is_post_revision( $post_id ) ) return NULL; if ( ! isset( $post_id ) ) return NULL; if ( has_post_thumbnail( $post_id ) ) return NULL; $args = array( 'numberposts' => 1, 'order' => 'DESC', // DESC for the last image 'post_mime_type' => 'image', 'post_parent' => $post_id, 'post_status' => NULL, 'post_type' => 'attachment' ); $attached_image = get_children( $args ); if ( $attached_image ) { foreach ( $attached_image as $attachment_id => $attachment ) set_post_thumbnail( $post_id, $attachment_id ); } } add_action( 'save_post', 'zhiku_automatic_featured_image' );
有了这段代码,不但不会因为忘记上传缩略图而导致主题显示错误,在缩略图和文章的第一篇图片是一张图片的时候,还可以省掉一个手动上传缩略图的步骤,一举两得!