Gutenberg - xóa / thêm các khối với tập lệnh tùy chỉnh


8

Tôi hiện đang thử nghiệm plugin Gutenberg mới với chủ đề và plugin được phát triển của riêng tôi. Chủ đề của tôi có một hộp meta tùy chỉnh với một hành động cho người dùng. Khi người dùng nhấp vào hành động này, nội dung bài đăng sẽ bị xóa hoàn toàn và nội dung 'tùy chỉnh' mới được thêm vào trình chỉnh sửa tinyMce mặc định.

Ví dụ : tinymce.get (nội dung trực tuyến). SetContent (nội dung tùy chỉnh của tôi trực tiếp);

Điều này tất nhiên không còn hoạt động nữa với Trình soạn thảo Guteberg mới và tôi đang đấu tranh để tìm giải pháp.

Vì vậy, về cơ bản những gì tôi đang cố gắng làm là xóa tất cả khối / nội dung khỏi trình soạn thảo gutenberg và thêm một khối (văn bản) mới với nội dung tùy chỉnh của tôi thông qua javascript. Có ai có bất cứ gợi ý để chỉ cho tôi đi đúng hướng?


các khối gutenberg được lưu trữ trong một kho lưu trữ dữ liệu, đây là một đoạn mồi tốt trên riad.blog/2018/06/07/. Điều đó có thể dẫn đến một câu trả lời
Tom J Nowell

Câu trả lời:


14

Có lẽ có một cách đơn giản hơn để làm điều này và nếu không, bạn nên mở một vấn đề trên trình theo dõi vấn đề Gutenberg GH (API không được đặt trong đá).

Vì API không được thiết lập, câu trả lời này có thể vô dụng khi cuối cùng nó được thực hiện và hợp nhất. Nơi đầu tiên và tốt nhất để đặt câu hỏi GB là trên GitHub

Bạn có thể loại bỏ tất cả các khối bằng cách sử dụng này:

wp.data.dispatch( 'core/editor' ).resetBlocks([]);

Sau đó, bạn có thể tạo một khối mới theo chương trình:

let block = wp.blocks.createBlock( 'core/paragraph' );

Thêm văn bản vào nó:

block.attributes.content.push( 'hello world' );

Và chèn nó như thế này:

wp.data.dispatch( 'core/editor' ).insertBlocks( block );

Khi kiểm tra thêm, có một phương pháp đơn giản hơn:

let block = wp.blocks.createBlock( 'core/paragraph', { content: 'test' } );
wp.data.dispatch( 'core/editor' ).insertBlocks( block );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.