您基于代码使用的答案esc_attr()
此行错误:
update_post_meta( $variation_id, \'my_text_field\', esc_attr( $text_field ));
esc_attr()
用于转义值,以便将其放置在输出的HTML属性中。这是一个完全错误的使用,这是什么转换您的
<
和
>
字符。只需将其删除即可阻止这种情况的发生:
update_post_meta( $variation_id, \'my_text_field\', $text_field );
请注意,这允许任何可以编辑此产品的人添加他们想要的任何HTML。如果希望textarea遵守有关内容中HTML标记的常规权限规则,请检查用户的权限并使用删除不允许的标记
wp_kses_post()
如果不允许他们添加所有标记:
if ( ! current_user_can( \'unfiltered_html\' ) ) {
$text_field = wp_kses_post( $text_field );
}
update_post_meta( $variation_id, \'my_text_field\', $text_field );
这将确保HTML标记在textarea中工作,但不会保留换行符。如果还想像经典WordPress编辑器的文本视图那样保留换行符和段落,那么需要传递值
wpautop()
输出时:
echo wpautop( get_post_meta( $variation[ \'variation_id\' ], \'my_text_field\', true ) );