WordPress图片alt文本字段未过滤双引号导致页面崩溃
解决WordPress图片Alt文本双引号导致页面崩溃的问题
媒体库图片Alt字段处理
用attachment_fields_to_save钩子在保存媒体元数据前过滤双引号,直接修改要存入数据库的Alt文本:
add_filter('attachment_fields_to_save', 'strip_alt_text_double_quotes', 10, 2); function strip_alt_text_double_quotes($post, $attachment) { // 图片Alt文本对应post_excerpt字段 if (isset($attachment['post_excerpt'])) { // 移除双引号,也可以用esc_attr()转义为HTML实体 $attachment['post_excerpt'] = str_replace('"', '', $attachment['post_excerpt']); // 转义写法:$attachment['post_excerpt'] = esc_attr($attachment['post_excerpt']); } return $attachment; }
ACF图片字段Alt文本处理
针对ACF的单图/图库字段,用acf/update_value钩子拦截保存操作,过滤Alt文本中的双引号:
add_filter('acf/update_value/type=image', 'filter_acf_image_alt_double_quotes', 10, 3); function filter_acf_image_alt_double_quotes($value, $post_id, $field) { // 处理单个图片字段 if (is_array($value) && isset($value['alt'])) { $value['alt'] = str_replace('"', '', $value['alt']); } // 处理图库字段(多图片数组) elseif (is_array($value)) { foreach ($value as &$image) { if (isset($image['alt'])) { $image['alt'] = str_replace('"', '', $image['alt']); } } } return $value; }
补充说明
- 不需要借助Ajax,上述Filter钩子都是在数据写入数据库前触发,直接修改待保存的内容。
- 两种处理方式:直接移除双引号,或者用
esc_attr()转义为",转义后Alt文本仍能保留引号语义,同时不会破坏HTML结构。
内容的提问来源于stack exchange,提问作者Giovanni Aceto
相关产品推荐
相关产品推荐

