wordpress提取正文中的第一张图片自动设置为特色图

wordpress 2025-07-26 19

在WordPress中自动提取正文第一张图片并设置为特色图(特色图像),可以通过代码片段或插件实现。以下是两种主流方法:

方法 1:纯代码方式实现(推荐)

将以下代码添加到主题的functions.php文件中(或通过代码片段插件如Code Snippets添加):

// 自动提取正文第一张图片作为特色图
function auto_set_featured_image_from_content() {
    global $post;
    
    // 仅对新文章生效(避免覆盖已有特色图)
    if ( !empty( $post->ID ) && !has_post_thumbnail( $post->ID ) ) {
        $content = $post->post_content;
        
        // 匹配正文中的第一个 <img> 标签
        preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches );
        
        if ( isset( $matches[1][0] ) ) {
            $first_image_url = $matches[1][0];
            
            // 检查图片是否已存在于媒体库
            $attachment_id = attachment_url_to_postid( $first_image_url );
            
            if ( $attachment_id ) {
                // 如果图片在媒体库,直接设为特色图
                set_post_thumbnail( $post->ID, $attachment_id );
            } else {
                // 如果图片不在媒体库,下载并导入
                require_once( ABSPATH . 'wp-admin/includes/media.php' );
                require_once( ABSPATH . 'wp-admin/includes/file.php' );
                require_once( ABSPATH . 'wp-admin/includes/image.php' );
                
                $tmp = download_url( $first_image_url );
                if ( !is_wp_error( $tmp ) ) {
                    $file_array = array(
                        'name' => basename( $first_image_url ),
                        'tmp_name' => $tmp
                    );
                    
                    $attachment_id = media_handle_sideload( $file_array, $post->ID );
                    if ( !is_wp_error( $attachment_id ) ) {
                        set_post_thumbnail( $post->ID, $attachment_id );
                    }
                }
            }
        }
    }
}

// 在保存文章时触发
add_action( 'save_post', 'auto_set_featured_image_from_content' );

代码说明:

条件检查:仅当文章没有特色图时才生效。

正则匹配:通过正则提取正文中的第一个<img>标签的 src。

媒体库处理:

如果图片已存在于媒体库,直接关联。

如果图片是外链,先下载到媒体库,再设为特色图。

触发时机:在文章保存时(save_post 钩子)执行。

方法 2:插件实现(简单快捷)

如果不想写代码,可以使用以下插件:

Quick Featured Images

免费插件,支持批量设置第一张图片为特色图。

Auto Featured Image

自动扫描正文中的第一张图片并设为特色图。

这两个插件到wordpress官方的插件库下载就可以

注意事项

图片版权:确保正文中的图片有合法使用权。

性能优化:如果文章量大,建议用代码方案(避免插件臃肿)。

兼容性:代码需测试是否与主题或其他插件冲突(如缓存插件)。

测试步骤

发布一篇 无特色图 且正文中包含图片的文章。

保存后检查是否自动生成了特色图。

如果失败,检查图片是否为外链(需允许下载)或正则匹配是否被主题过滤。

如有其他需求(如提取特定尺寸图片),可进一步调整正则或添加条件。

  • No posts found in this category.
  • 推荐模板