You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress文章元数据中用wp_editor()替换textarea?

将自定义字段的textarea替换为wp_editor的解决方案

1. 替换textarea为wp_editor

把原来的textarea代码替换为wp_editor()函数调用,注意编辑器ID和表单name必须一致,确保提交数据能正常识别:

<?php
// 获取已保存的自定义字段值
$product_desc = get_post_meta($post->ID, 'product_description', true);

// 渲染wp_editor编辑器
wp_editor(
    $product_desc,
    'product_description', // 编辑器唯一ID,需与textarea_name一致
    array(
        'textarea_name' => 'product_description', // 表单提交的name属性
        'textarea_rows' => 10, // 编辑器默认行数,可按需调整
        'media_buttons' => false, // 是否显示媒体上传按钮,按需开启
        'tinymce' => array(
            'toolbar1' => 'bold,italic,underline,link,unlink,undo,redo', // 自定义工具栏按钮
            'toolbar2' => '', // 取消第二行工具栏
        ),
        'quicktags' => true, // 是否显示HTML快速标签按钮
        'wpautop' => true // 是否自动添加<p>标签,默认开启
    )
);
?>

2. 修改保存逻辑(关键!)

原来的sanitize_text_field()会过滤所有HTML标签,导致富文本内容丢失,必须替换为适合富文本的安全过滤函数:

if ( isset( $_POST[ 'product_description' ] ) ) {
    // 先去除WordPress自动添加的斜杠,再用wp_kses_post保留合法HTML标签
    $sanitized_desc = wp_kses_post( wp_unslash( $_POST['product_description'] ) );
    update_post_meta( $post_id, 'product_description', $sanitized_desc );
}

额外说明

如果需要自定义允许的HTML标签(比如添加<h3>、<blockquote>等),可以替换wp_kses_post为自定义规则:

$allowed_html = array(
    'p' => array(),
    'strong' => array(),
    'em' => array(),
    'a' => array(
        'href' => array(),
        'title' => array()
    ),
    'h3' => array(),
    'blockquote' => array()
);
$sanitized_desc = wp_kses( wp_unslash( $_POST['product_description'] ), $allowed_html );

内容的提问来源于stack exchange,提问作者Yudi Saryudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:25:04