作为编辑器时,动态块属性(字符串)中的德语UMLAUT在数据库中的编码/保存不正确,但如果由管理员编辑,则正确。
如何复制:
创建dynamich块插件:testblock。php
<?php
/**
* Plugin Name: Gutenberg wrong encoding example dynamic
*/
function test_callback( $block_attributes, $content ) {
return \'<p>\'.$block_attributes[\'dataTest\'].\'</p>\';
}
function wrong_encoding_dynamic() {
wp_register_script(
\'test\',
plugins_url( \'testblock.js\',__FILE__ ),
array( \'wp-editor\', \'wp-i18n\', \'wp-element\', \'wp-components\', \'wp-blocks\' ),
\'1.0.0\',
true
);
register_block_type( \'dev/test\', array(
\'editor_script\' => \'test\',
\'render_callback\' => \'test_callback\'
) );
}
add_action( \'init\', \'wrong_encoding_dynamic\' );
测试块。js公司:
( function( blocks, element, data ) {
var el = element.createElement,
registerBlockType = blocks.registerBlockType;
const {
TextControl,
} = wp.components;
registerBlockType( \'dev/test\', {
title: \'Dev: Test\',
icon: \'megaphone\',
category: \'widgets\',
attributes: {
dataTest:{
type:\'string\',
default:\'ÄÖÜäöüß\'
},
},
edit: function( props ) {
return el(TextControl,{
onChange: ( value ) => {
props.setAttributes({dataTest:value});
},
}
);
}
});
}(
window.wp.blocks,
window.wp.element,
window.wp.data,
) );
以(超级)管理员身份登录,激活插件,创建新帖子,添加块并键入一些UMLAUT。保存或发布帖子(&P);查看输出,然后注销。以编辑器身份登录,重复步骤2,比较输出db中的帖子内容示例:
<!-- wp:dev/test {"dataTest":"u00c4u00d6u00dcu00e4u00f6u00fcu00dfu00f6"} /-->
但应该是:
<!-- wp:dev/test {"dataTest":"ÄÖÜäöüßö"} /-->
知道怎么了吗?