使用cmb2插件,我创建了一个具有textarea元字段的元盒,方法如下:
function myprefix_register_metabox() {
$prefix = \'myprefix_\';
$cmb = new_cmb2_box( array(
\'id\' => $prefix . \'metabox\',
\'title\' => esc_html__( \'My Metabox\', \'cmb2\' ),
\'object_types\' => array( \'page\' ),
) );
$cmb->add_field( array(
\'name\' => esc_html__( \'Text Area for Code\', \'cmb2\' ),
\'id\' => $prefix . \'textarea_code\',
\'type\' => \'textarea_code\',
\'sanitization_cb\' => \'my_sanitize_text_callback\',
) );
}
add_action( \'cmb2_admin_init\', \'myprefix_register_metabox\' );
我使用此回调函数清理元字段内容:
function my_sanitize_text_callback( $value, $field_args, $field ) {
$value = htmlentities( html_entity_decode( $value, ENT_QUOTES ), ENT_QUOTES );
return $value;
}
一切正常,但如何查看存储在db中的textarea的内容以及转换的实体
html_entity_decode()
在“管理”面板的“编辑”屏幕中,要获取更具可读性的文本?
最合适的回答,由SO网友:benny-ben 整理而成
我已经看到,CMB2提供了创建自定义转义函数的可能性,通过该函数可以在显示值之前检查值。所以我设置了escape_cb
元字段中的参数如下:
$cmb->add_field( array(
\'name\' => esc_html__( \'Text Area for Code\', \'cmb2\' ),
\'id\' => $prefix . \'textarea_code\',
\'type\' => \'textarea_code\',
\'sanitization_cb\' => \'my_sanitize_text_callback\',
\'escape_cb\' => \'my_escape_text_callback\'
) );
然后,我创建了用于转义的回调函数,以便将HTML实体转换为相应的字符:
function my_escape_text_callback( $value, $field_args, $field ) {
$escaped_value = html_entity_decode( $value, ENT_QUOTES );
return $escaped_value;
}
现在它工作得很好,在管理面板的编辑屏幕中,我可以看到可读的文本。