我在 WordPress 6.5.3(最新)中遇到 wp_editor (TinyMCE) 的问题,其中内容中的引号被错误替换。我使用自定义短代码(由 WPCode 处理)在帖子上显示可编辑内容区域,但是当内容加载到编辑器中时,双引号 (") 被替换为“实体,导致显示问题。
代码片段:
<?php
wp_editor($editable_content, 'post_content', [
'textarea_name' => 'post_content',
'textarea_rows' => 20,
]);
//error_log($editable_content);
?>
示例:
<img src="https://upload.wikimedia.org/wikipedia/commons/2/22/L%C3%B6we_1.jpg" alt="" />
显示(不存储)为:
<img src=“https://upload.wikimedia.org/wikipedia/commons/2/22/L%C3%B6we_1.jpg“ alt=““ />
使用可视化编辑器后:
<img src="“https://upload.wikimedia.org/wikipedia/commons/2/22/L%C3%B6we_1.jpg“" alt="““" />
我已经尝试过以下方法来解决该问题,但都不起作用:
使用 remove_filter 函数删除 wptexturize 或 wp_filter_post_kses
修改TinyMCE设置
问题仍然存在,编辑器中的引号仍然被错误地替换。在调用 wp_editor 之前,我可能没有正确使用remove_filter函数。
我还确保 $editable_content 变量在将其传递给 wp_editor 之前包含正确的内容。
我已经面临这个问题一天多了,非常感谢您的帮助。
如果您需要任何其他信息,请告诉我。
我也有同样的问题
wp_editor()
。问题确实出在wptexturize
,而且remove_filter
也不起作用。为了解决这个问题,我们可以完全禁用它,如下所示:
add_filter('run_wptexturize', '__return_false');
但是,如果我们想保留
wptexturize
,我们可以仅对 textarea
中的内容禁用它:
function my_no_texturize_tags($tags) {
$tags[] = 'textarea';
return $tags;
}
add_filter('no_texturize_tags', 'my_no_texturize_tags');
不再干扰发送到
wp_editor()
的内容。
郑重声明,虽然
wptexturize
无法直接在wp_editor()
设置中禁用,但我们可以禁用wpautop
(如果需要),如下所示:
wp_editor($editable_content, 'post_content', [
'textarea_name' => 'post_content',
'textarea_rows' => 20,
'wpautop' => false,
]);