Tích hợp MediaUpload cho block WordPress: Hướng dẫn chi tiết

Tích hợp MediaUpload cho Block WordPress: Hướng Dẫn Chi Tiết

Việc tích hợp MediaUpload vào block của WordPress có thể đem lại cho bạn nhiều tiện ích và sự linh hoạt trong việc quản lý nội dung. Với tính năng này, bạn có thể dễ dàng cho phép người dùng tải lên hình ảnh, video, và các tệp tin khác trực tiếp từ giao diện chỉnh sửa block. Dưới đây là hướng dẫn chi tiết về cách thực hiện điều này.

1. Chuẩn Bị Môi Trường

Trước khi bắt đầu, bạn cần đảm bảo rằng bạn đã thiết lập được một plugin hoặc một theme cho block của mình. Đảm bảo rằng bạn đã cài đặt WordPress và tạo một block cơ bản của riêng bạn. Nếu bạn chưa có, hãy tạo một plugin đơn giản chỉ bằng cách tạo một thư mục mới trong thư mục `wp-content/plugins` của bạn.

2. Đăng Ký Block Mới

Bắt đầu bằng cách đăng ký block mới trong file PHP của plugin hoặc theme của bạn. Bạn có thể sử dụng hàm `register_block_type` để thực hiện điều này. Dưới đây là ví dụ cú pháp để đăng ký block:


function my_custom_block() {
register_block_type('my-plugin/my-custom-block', array(
'editor_script' => 'my-custom-block-editor-script',
));
}
add_action('init', 'my_custom_block');

3. Tạo Script Editor

Bạn sẽ cần thêm JavaScript để xử lý MediaUpload. Đầu tiên, tạo một file JavaScript trong thư mục plugin của bạn, ví dụ: `block-editor.js`:


const { registerBlockType } = wp.blocks;
const { MediaUpload, MediaUploadCheck } = wp.blockEditor;
const { Button } = wp.components;

registerBlockType('my-plugin/my-custom-block', {
edit: function(props) {
return (




onSelect={media => {
console.log(media);
}}
allowedTypes={['image']}
render={({ open }) => (

)}
/>


);
},
save: function() {
return null; //Sử dụng Render Server
}
});

4. Kết Nối Script Trong Thiết Lập Plugin

Sau khi đã tạo script cho block editor, bạn cần đăng ký nó trong file PHP bằng hàm `wp_enqueue_script`. Đảm bảo bạn sử dụng đúng các handle và đường dẫn:


function my_custom_block_assets() {
wp_enqueue_script(
'my-custom-block-editor-script',
plugins_url('block-editor.js', __FILE__),
array('wp-blocks', 'wp-editor', 'wp-components', 'wp-element', 'wp-i18n'),
null,
true
);
}
add_action('enqueue_block_editor_assets', 'my_custom_block_assets');

5. Sử Dụng MediaUpload Để Tải Lên Tệp Tin

Trong hàm `onSelect` của `MediaUpload`, bạn có thể xử lý logic cho việc lưu trữ và hiển thị tệp tin tải lên. Bạn có thể lưu trữ URL của hình ảnh và hiển thị nó trong block editor. Dưới đây là ví dụ:


onSelect={media => {
props.setAttributes({ imageURL: media.url });
console.log(media);
}}

6. Cấu Hình Thêm Các Thuộc Tính

Đừng quên thêm thuộc tính cho block của bạn. Bạn cần phải định nghĩa các thuộc tính trong lệnh gọi `register_block_type`:


register_block_type('my-plugin/my-custom-block', array(
'attributes' => array(
'imageURL' => array('type' => 'string'),
),
'editor_script' => 'my-custom-block-editor-script',
));

7. Hiển Thị Hình Ảnh Trên Trang Web

Khi hiển thị dữ liệu trên frontend, bạn cần xử lý để xuất hình ảnh tải lên. Điều này có thể thực hiện trong hàm `render` server-side nếu bạn đang sử dụng block dynamic. Dưới đây là cách đơn giản để hiển thị hình ảnh:


function render_my_custom_block($attributes) {
return '';
}

8. Kiểm Tra và Hoàn Thiện

Giờ đây, bạn đã có một block cơ bản với tính năng tải lên MediaUpload. Kiểm tra block của bạn trong giao diện WordPress editor để đảm bảo rằng bạn có thể tải lên hình ảnh mà không gặp rắc rối. Nếu bạn gặp vấn đề, hãy kiểm tra console để tìm lỗi JavaScript.

Kết Luận

Tích hợp MediaUpload cho block WordPress là một cách tuyệt vời để tạo ra một giao diện trực quan và thân thiện cho người dùng. Hi vọng với hướng dẫn chi tiết trên, bạn có thể dễ dàng áp dụng và phát triển thêm các block tùy chỉnh cho theme của mình. Nếu bạn muốn tìm hiểu thêm về các tính năng khác, đừng ngần ngại nghiên cứu thêm tài liệu của WordPress.