古腾堡完全使用JS驱动,它有一套单独的基于JS的钩子体系,所以你的PHP代码失效是情理之中的。
首先在你主题的functions.php中加入以下代码以在网页中引入JS。
add_action( 'enqueue_block_editor_assets', function () {
// JS文件保存路径,把/js改成你想保存到的主题目录下
$js_dir = get_stylesheet_directory_uri() . '/js';
wp_enqueue_script( 'custom-image-block', $js_dir . '/custom-image-block.js', array(
'wp-blocks',
'wp-dom'
), '', true );
}, 100 );
之后创建这个JS文件,并向其中写入以下代码:
wp.hooks.addFilter(
'blocks.registerBlockType',
'textdomain/change-image-default-alignment',
function (settings, name) {
if (name !== 'core/image') {
return settings;
}
const newSettings = {
...settings,
attributes: {
...settings.attributes,
align: { type: 'string', default: 'center' },
},
};
return newSettings;
},
);