自动提取文章图片作为缩略图

自动提取 WordPress 文章中的第一张图片作为文章缩略图

图片可以为网站增加很多可读性,WordPress 内置了强大的缩略图系统,可以根据设置的尺寸自动输出压缩后的图片,这样就不会因为不小心上传了比较大的图片而导致网站打开速度慢了。

然而有时候,我们在文章上上传了图片,却忘记了上传缩略图,这时候有些需要显示缩略图的主题显示可能就不正常了,这当然是我们不希望看到的。下面的一段代码可以自动提取文章里面的第一张图片作为文章的缩略图。

具体实现思路是,首先判断是不是自动保存的修订版本,然后判断当前编辑的是否为文章,最后判断是否手动设置了缩略图,如果都不是,调取文章附件中的第一张图片,设置为文章的缩略图。

add_action( 'save_post', function( $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 );
	}
}

有了这段代码,不但不会因为忘记上传缩略图而导致主题显示错误,在缩略图和文章的第一篇图片是一张图片的时候,还可以省掉一个手动上传缩略图的步骤,一举两得!

Related Posts

0条评论

  1. 你好!
    我在 functions.php里面<?php 后面插入以上代码,但是依然未能实现文章列表中显示第一张图片,请问可否具体告知下怎么做?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注