首页 WordPress教程 WordPress非正则获取文章第一张图片
正文 评论

WordPress非正则获取文章第一张图片

网上流传的WordPress获取文章第一张图片作为缩略图的方法都是采用正则匹配抓取来实现的,代码如下:

function catch_that_image() {global $post, $posts;$first_img = \'\';ob_start();ob_end_clean();$output = preg_match_all(\'/<img.+src=[\\\'\"]([^\\\'\"]+)[\\\'\"].*>/i\', $post->post_content, $matches);$first_img = $matches[1][0];if(empty($first_img)){$first_img = \'/images/default.jpg\';}return $first_img;}

有人说这种方式效率太低,所以我写了第二种方法,首先通过get_children()函数来获取文章的第一张图片ID:

function get_first_image_ID($postID = \'\') {global $post;if( ! $postID ) $postID = $post->ID;$thumbnail_id = \'\';$args = array(\'numberposts\' => 1,\'order\'=> \'ASC\',\'post_mime_type\' => \'image/jpeg\',\'post_parent\' => $postID,\'post_status\' => null,\'post_type\' => \'attachment\');$attachments = get_children( $args );if($attachments){$thumbnail_id = key($attachments);}return $thumbnail_id;}

以上函数如果在主循环中使用,不需要传递文章ID。

然后通过图片ID获取图片地址:

$thumbnail_src = wp_get_attachment_image_src($thumbnail_id, $size);$img_url = $thumbnail_src[0];

$size参数指定缩略图版本,也就是图片大小。下面是输出缩略图的完整函数:

function bzg_thumbnail($size=\'post-thumbnails\') {global $post;$width = \'\';$height = \'\';$img_url = get_bloginfo(\'template_url\') . \'/images/default-thumbnail.png\';if( has_post_thumbnail() ) {$post_thumbnail_id = get_post_thumbnail_id( $post->ID );} else {$post_thumbnail_id = get_first_image_ID($post->ID);}if($post_thumbnail_id) {$thumbnail_src = wp_get_attachment_image_src($post_thumbnail_id, $size);$img_url = $thumbnail_src[0];$width = \' width=\"\' . $thumbnail_src[1] . \'\"\';$height = \' height=\"\' . $thumbnail_src[2] . \'\"\';}echo \'<a href=\"\' . get_permalink($post->ID) . \'\">\';echo \'<img src=\"\' . $img_url . \'\"\' . $width . $height . \' alt=\"\' . $post->post_title . \'\" />\';echo \'</a>\';}

当指定了特色图像时,缩略图将输出特色图像,否则获取文章第一张图片作为缩略图,如果文章没有上传任何图片,则使用主题images目录里的default-thumbnail.png图片作为缩略图。

用本文方法获取缩略图,可以选择小尺寸版本图片,而正则的方式是输出原图,会对文章列表页访问速度造成一定影响。

-=||=-收藏赞 (0)
更多主题
单栏极简文艺WordPress博客主题:Diaspora主题
¥ 0 关注:20,377
详情
简约黑白WordPress个人博客主题:Personal主题
¥ 0 关注:20,230
详情
v1.0.0
小程序收录免费WordPress主题:XCX主题
¥ 0 关注:20,028
详情
v1.0.0
一款简约单栏的免费WordPress博客主题:itheme主题
¥ 0 关注:18,247
详情
功能丰富切轻量的WordPress虚拟资源主题:Rizhuti主题
¥ 599 关注:18,202
详情
大气优雅免费WordPress博客主题:HONEY主题
¥ 0 关注:15,017
详情
回复
暂无评论

不要再留垃圾评论了,主题君整理资源不容易,留几句鼓励的话吧。