停用WordPress插件Jetpack后Pinterest嵌入失效,求批量转Gutenberg块方案
批量将Jetpack处理的Pinterest嵌入转换为Gutenberg标准块的解决方案
方案1:数据库批量替换(适合有技术基础的用户)
- 核心逻辑:直接通过SQL语句将数据库中存储的纯Pinterest URL替换为Gutenberg Pinterest块的结构
- 步骤:
- 先完整备份数据库,这是不可逆操作的核心前提
- 登录数据库管理工具(如phpMyAdmin),找到你的WordPress帖子表(默认前缀为
wp_posts,需根据实际情况调整) - 执行以下SQL语句(先保留
LIMIT 10测试效果,确认无误后再移除):UPDATE wp_posts SET post_content = REGEXP_REPLACE( post_content, '\bhttps:\/\/(www\.pinterest\.com\/pin\/|pin\.it\/)[\w-]+\b', '<!-- wp:pinterest {"url":"\\0"} /-->' ) WHERE post_content LIKE '%https://www.pinterest.com/pin/%' OR post_content LIKE '%https://pin.it/%' LIMIT 10; -- 测试阶段保留,正式执行时删除 - 执行后抽查若干帖子内容,确认Pinterest URL已转换为标准块结构
方案2:自定义WP CLI脚本(更安全的批量操作)
- 核心逻辑:利用WP CLI工具遍历所有帖子批量替换内容,相比直接SQL更灵活可控
- 步骤:
- 备份数据库和网站文件
- 连接到服务器命令行环境,执行以下命令(替换
wp_为你的数据库表前缀):# 遍历所有已发布的文章和页面,替换Pinterest链接为Gutenberg块 wp post list --post_type=post,page --post_status=publish --format=ids | xargs -I {} wp post update {} --post_content="$(wp post get {} --field=post_content | sed -E 's/https:\/\/(www\.pinterest\.com\/pin\/|pin\.it\/)[\w-]+/<!-- wp:pinterest {"url":"&"} \/-->/g')" - 执行完成后随机抽查帖子,确认转换效果
方案3:自定义一次性插件(适合非技术用户或精准处理场景)
- 核心逻辑:通过简单的自定义插件,在WordPress后台触发批量转换,无需接触命令行或数据库
- 步骤:
- 创建新PHP文件(如
batch-pinterest-convert.php),复制以下代码:<?php /* Plugin Name: Batch Convert Pinterest Embeds Description: 批量将Jetpack处理的Pinterest纯URL转换为Gutenberg标准Pinterest块 Version: 1.0 */ function batch_convert_pinterest_embeds() { // 标记转换完成,避免重复执行 if ( ! get_option( 'pinterest_convert_completed' ) ) { $query_args = array( 'post_type' => array( 'post', 'page' ), 'posts_per_page' => -1, 'post_status' => 'publish', 's' => 'https://www.pinterest.com/pin/ https://pin.it/' // 筛选包含Pinterest链接的内容 ); $posts_query = new WP_Query( $query_args ); if ( $posts_query->have_posts() ) { while ( $posts_query->have_posts() ) { $posts_query->the_post(); $original_content = get_the_content(); // 替换Pinterest URL为Gutenberg块 $updated_content = preg_replace( '/\bhttps:\/\/(www\.pinterest\.com\/pin\/|pin\.it\/)[\w-]+\b/', '<!-- wp:pinterest {"url":"$0"} /-->', $original_content ); // 仅当内容有变化时更新帖子 if ( $updated_content !== $original_content ) { wp_update_post( array( 'ID' => get_the_ID(), 'post_content' => $updated_content ) ); } } wp_reset_postdata(); update_option( 'pinterest_convert_completed', '1' ); echo '<div class="notice notice-success"><p>Pinterest嵌入批量转换完成!</p></div>'; } else { echo '<div class="notice notice-info"><p>未找到包含Pinterest链接的帖子或页面。</p></div>'; } } else { echo '<div class="notice notice-warning"><p>转换已完成,无需重复执行。如需重新转换,请删除插件后重新安装激活。</p></div>'; } } // 添加后台菜单入口 function register_convert_menu() { add_menu_page( 'Pinterest嵌入转换', 'Pinterest转换', 'manage_options', 'batch-pinterest-convert', 'batch_convert_pinterest_embeds' ); } add_action( 'admin_menu', 'register_convert_menu' ); ?> - 将文件上传到网站
wp-content/plugins/目录 - 登录WordPress后台,在「插件」列表中激活「Batch Convert Pinterest Embeds」插件
- 点击后台左侧菜单的「Pinterest转换」,页面会自动执行转换,完成后显示提示
- 转换完成后建议删除该插件,避免误操作
- 创建新PHP文件(如
方案4:付费定制服务
如果对技术操作不熟悉,或网站内容有复杂排版(如Pinterest链接嵌套在其他块/文本中),可以找专业WordPress开发者提供定制服务。开发者可根据网站具体情况调整转换逻辑,处理边缘案例,确保转换后内容排版正常,同时规避数据风险。
重要注意事项
- 所有操作前必须备份数据库和网站文件,若转换出现问题可及时恢复
- 建议先在测试环境中测试转换效果,确认无误后再在生产环境执行
- 若原内容中Pinterest链接与其他文本混合在段落内,转换后的Pinterest块会成为独立块,这是Gutenberg块的正常表现,可能需要少量手动调整排版
内容的提问来源于stack exchange,提问作者Ben Jones
相关产品推荐
相关产品推荐

