Gutenberg là bộ soạn mới của WordPress từ version 5.0, quản lý nội dung bài viết bằng các Blocks. Bài viết này sẽ hướng dẫn các bạn tạo 1 Block cho riêng mình ngoài các Block được hỗ trợ sẵn của Gutenberg WordPress Editor.
1. Đăng ký 1 block vào file functions.php
<?php function gutenberg_vinasupport_sample_01_register_block() { wp_register_script( 'gutenberg-examples-01', get_bloginfo('template_url') . '/src/assets/gutenberg-examples-01.js', array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ) ); register_block_type( 'gutenberg-examples/example-01', array( 'editor_script' => 'gutenberg-examples-01', ) ); } add_action( 'init', 'gutenberg_vinasupport_sample_01_register_block' );
2. Tạo script xử lý nội dung của Block
Tạo 1 block có tên là “Example: H1“: Nội dung xử lý là insert nội dung “Hello World, we are vinasupport team” trong thẻ H1 vào bộ soạn thảo của WordPress.
Tạo file js có đường dẫn /src/assets/gutenberg-examples-01.js trong theme của WordPress. Bạn có thể đặt đường dẫn file này ở bất cứ đâu.
Nội dung file /src/assets/gutenberg-examples-01.js như sau:
( function( blocks, element ) { var el = element.createElement; var blockStyle = { backgroundColor: '#900', color: '#fff', padding: '20px', }; blocks.registerBlockType( 'gutenberg-examples/example-01', { title: 'Example: H1', icon: 'universal-access-alt', category: 'layout', edit: function() { return el( 'h1', { style: blockStyle }, 'Hello World, we are vinasupport team.' ); }, save: function() { return el( 'h1', { style: blockStyle }, 'Hello World, we are vinasupport team.' ); }, } ); }( window.wp.blocks, window.wp.element ));
Kết quả:
Bạn đã tạo thành công Block
Sau khi click vào Block “Example: H1”
3. Tạo script xử lý nội dung động cho Block
Giờ chúng ta tạo 1 script xử lý phức tạp hơn cho Block. Tạo Block với 1 bộ soạn thảo cho nhập dự liệu.
Nội dung của file /src/assets/gutenberg-examples-01.js bây giờ như sau:
( function( blocks, editor, i18n, element ) { var el = element.createElement; var __ = i18n.__; var RichText = editor.RichText; blocks.registerBlockType( 'gutenberg-examples/example-03-editable', { title: __( 'Example: Editable', 'gutenberg-examples' ), icon: 'universal-access-alt', category: 'layout', attributes: { content: { type: 'array', source: 'children', selector: 'p', }, }, edit: function( props ) { var content = props.attributes.content; function onChangeContent( newContent ) { props.setAttributes( { content: newContent } ); } return el( RichText, { tagName: 'p', className: props.className, onChange: onChangeContent, value: content, } ); }, save: function( props ) { return el( RichText.Content, { tagName: 'p', value: props.attributes.content, } ); }, } ); }( window.wp.blocks, window.wp.editor, window.wp.i18n, window.wp.element ) );
Kết quả chúng ta có 1 block mới có tên là “Example: Editable”
Và sau khi insert vào WordPress Editor:
Nguồn: vinasupport.com