将WordPress自定义字段值迁移至默认编辑器/摘要
批量迁移ACF自定义字段到默认字段并删除原字段
方法一:批量处理脚本(适合大量文章)
操作前务必备份数据库,避免数据丢失。可以将以下代码临时添加到当前主题的functions.php文件中,访问网站后台或前台任意页面触发执行,执行完成后立即删除这段代码:
add_action('init', 'migrate_acf_fields_to_default'); function migrate_acf_fields_to_default() { // 仅允许管理员操作 if (!current_user_can('manage_options')) return; // 查询所有包含目标自定义字段的文章,可修改post_type为你的文章类型(如page) $posts = get_posts([ 'post_type' => 'post', 'posts_per_page' => -1, 'post_status' => 'any', 'meta_query' => [ 'relation' => 'OR', ['key' => 'banner_description'], ['key' => 'main_description'] ] ]); foreach ($posts as $post) { $banner_desc = get_post_meta($post->ID, 'banner_description', true); $main_desc = get_post_meta($post->ID, 'main_description', true); $update_data = []; // 迁移banner_description到默认摘要 if (!empty($banner_desc)) { $update_data['post_excerpt'] = $banner_desc; } // 迁移main_description到默认编辑器内容 if (!empty($main_desc)) { $update_data['post_content'] = $main_desc; } // 更新文章并删除原字段 if (!empty($update_data)) { $update_data['ID'] = $post->ID; wp_update_post($update_data); delete_post_meta($post->ID, 'banner_description'); delete_post_meta($post->ID, 'main_description'); } } echo '字段迁移完成,请立即移除这段代码!'; exit; }
注意事项:
- 若文章数量过多(上千篇),建议修改
posts_per_page为50,多次运行并配合offset参数分批处理,避免服务器超时 - 可根据实际需求调整
post_type和post_status参数 - 原字段中的HTML格式会被保留,适配默认WYSIWYG编辑器的需求
方法二:手动处理(适合少量文章)
如果只有少量文章需要处理,直接编辑单篇文章:
- 复制
banner_description字段的值,粘贴到文章编辑页的摘要输入框 - 复制
main_description字段的值,粘贴到默认的WYSIWYG编辑器中 - 在文章编辑页的「自定义字段」区域,删除
banner_description和main_description两个字段 - 保存文章即可
内容的提问来源于stack exchange,提问作者JoshuaBrand
相关产品推荐
相关产品推荐

