Gutenberg Tất cả những gì bạn cần biết về Trình chỉnh sửa mới nhất của WordPress
Gutenberg là một trình chỉnh sửa mới cho WordPress sẽ hoàn toàn thay thế trình soạn thảo hỗ trợ TinyMCE hiện tại. Đây là một dự án đầy tham vọng sẽ thay đổi WordPress theo nhiều cách và sẽ ảnh hưởng đến cả người dùng cuối và nhà phát triển thông thường, cụ thể là những người phụ thuộc vào màn hình chỉnh sửa để làm việc trên WordPress. Đây là vẻ ngoài của nó.
Gutenberg cũng giới thiệu một mô hình mới trong WordPress được gọi là “Khối”.
“Khối” là thuật ngữ trừu tượng được sử dụng để mô tả đơn vị đánh dấu được tạo thành từ nội dung hoặc bố cục của trang web. Ý tưởng kết hợp các khái niệm về những gì trong WordPress ngày nay chúng ta đạt được với mã ngắn, HTML tùy chỉnh và phát hiện nhúng vào một API nhất quán duy nhất và trải nghiệm người dùng.
Thiết lập dự án
Biết được sự thật rằng Gutenberg được xây dựng dựa trên React, một số nhà phát triển lo lắng rằng rào cản quá cao đối với các nhà phát triển cấp mới để phát triển Gutenberg.
Thiết lập React.js có thể khá tốn thời gian và khó hiểu nếu bạn mới bắt đầu với nó. Bạn sẽ cần ít nhất, biến áp JSX, Babel, tùy thuộc vào mã của bạn, bạn có thể cần một số plugin Babel và Bundler như Webpack, Rollup hoặc Parcel.
May mắn thay, một số người trong cộng đồng WordPress tăng cường và đang cố gắng làm cho việc phát triển Gutenberg dễ dàng nhất có thể cho mọi người theo dõi. Hôm nay, chúng tôi có một công cụ sẽ tạo ra một bản tóm tắt Gutenberg chúng ta có thể bắt đầu viết mã ngay lập tức thay vì làm rối với các công cụ và cấu hình.
Tạo khối Guten
Các tạo khối
là một dự án khởi xướng của Ahmad Awais. nó là một bộ công cụ cấu hình không (# 0CJS
) sẽ cho phép bạn phát triển khối Gutenberg với một số ngăn xếp hiện đại được cài đặt sẵn bao gồm React, Webpack, ESNext, Babel, ESLint và Sass. Làm theo hướng dẫn để bắt đầu với Tạo khối Guten.
Sử dụng ES5 (ECMAScript 5)
Sử dụng tất cả các công cụ này để tạo ra một đơn giản “Chào thế giới” khối có vẻ như quá nhiều. Nếu bạn muốn giữ cho ngăn xếp của mình gọn gàng, bạn thực sự có thể phát triển một khối Gutenberg bằng cách sử dụng một ECMAScript 5 đơn giản mà bạn có thể đã quen thuộc. Nếu bạn có WP-CLI 1.5.0 được cài đặt trên máy tính của bạn, bạn có thể chạy đơn giản
khối giàn giáo wp[--title = ] [--dashicon = ] [--c loại = ] [--theme] [--plugin = ] [--lực lượng]
… đến tạo bản tóm tắt khối Gutenberg cho plugin hoặc chủ đề của bạn. Cách tiếp cận này hợp lý hơn, đặc biệt, đối với các plugin và chủ đề hiện có mà bạn đã phát triển trước thời đại Gutenberg.
Thay vì tạo một plugin mới để chứa các khối Gutenberg, bạn có thể muốn tích hợp các khối vào các plugin hoặc chủ đề của mình. Và để làm cho hướng dẫn này dễ dàng để làm theo cho tất cả mọi người, chúng tôi sẽ sử dụng ECMAScript 5 với WP-CLI.
Đăng ký một khối mới
Gutenberg hiện được phát triển dưới dạng plugin và sẽ được hợp nhất vào WordPress 5.0 bất cứ khi nào nhóm cảm thấy sẵn sàng. Vì vậy, hiện tại, bạn sẽ cần phải cài đặt nó từ Trang plugin trong quản trị viên
. Khi bạn đã cài đặt và kích hoạt nó, hãy chạy lệnh sau trong Terminal hoặc Command Prompt nếu bạn đang ở trên máy Windows.
chuỗi khối giàn giáo wp --title = "Sê-ri HTML5" --theme
Lệnh này sẽ tạo một Khối cho chủ đề hiện đang hoạt động. Khối của chúng tôi sẽ bao gồm các tệp sau:
. â ??  ??¢Â ??  ??¢Â ?? loạt â ?? Â'Ã' â ??  ??¢Â ??  ??¢Â ?? block.js â ?? Â'Ã' â ??  ??¢Â ??  ??¢Â ?? biên tập viên¢Â ?? Â'Ã' â ??  ??¢Â ??  ??¢Â ?? style.css â ??  ??¢Â ??  ??¢Â ?? loạt.php
Hãy tải tập tin chính của các khối của chúng tôi trong Hàm.php
của chủ đề của chúng tôi:
if (function_exists ('register_block_type')) yêu cầu get_template_directory (). '/blocks/series.php';
Lưu ý rằng chúng tôi kèm theo tải tập tin với một điều kiện. Điều này đảm bảo khả năng tương thích với phiên bản WordPress trước đó mà khối của chúng tôi chỉ được tải khi có mặt Gutenberg. Khối của chúng tôi hiện có sẵn trong giao diện Gutenberg.
Nó trông như thế nào khi chúng ta chèn khối.
API Gutenberg
Gutenberg giới thiệu hai bộ API để đăng ký một Khối mới. Nếu chúng ta nhìn vào loạt.php
, chúng ta sẽ tìm thấy đoạn mã sau đăng ký Khối mới của chúng ta. Nó cũng tải biểu định kiểu và JavaScripts ở mặt trước và trình soạn thảo.
register_block_type ('hai mươi
Như chúng ta có thể thấy ở trên, Khối của chúng ta được đặt tên hai mươi / loạt
, tên Khối phải là duy nhất và được đặt tên để tránh va chạm với các Khối khác do các plugin khác mang đến.
Hơn nữa, Gutenberg cung cấp một bộ API JavaScript mới để tương tác với “Khối” giao diện trong trình soạn thảo. Vì API khá phong phú, chúng tôi sẽ tập trung vào một số chi tiết cụ thể mà tôi nghĩ bạn nên biết để có được một khối Gutenberg đơn giản nhưng hoạt động đơn giản.
wp.blocks.registerBlockType
Đầu tiên, chúng tôi sẽ xem xét wp.blocks.registerBlockType
. Hàm này được sử dụng để đăng ký mới “Khối” tới biên tập viên Gutenberg. Nó đòi hỏi hai đối số. Đối số đầu tiên là tên Khối nên theo tên đã đăng ký trong register_block_type
chức năng trong phía PHP. Đối số thứ hai là một Đối tượng xác định thuộc tính Khối như tiêu đề, danh mục và một vài chức năng để hiển thị giao diện Chặn.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('hai mươi );
wp.element.createEuity
Hàm này cho phép bạn tạo phần tử trong “Khối” trong trình chỉnh sửa bài. Các wp.element.createEuity
chức năng cơ bản là một sự trừu tượng của React createdEuity ()
do đó, nó chấp nhận cùng một tập hợp các đối số. Đối số đầu tiên lấy loại phần tử ví dụ như một đoạn văn, một khoảng
, hoặc một div
như hình dưới đây:
wp.element.createEuity ('div');
Chúng ta có thể bí danh hàm thành một biến vì vậy nó ngắn hơn để viết. Ví dụ:
var el = wp.element.createEuity; el ('div');
nếu bạn thích sử dụng cú pháp ES6 mới, bạn cũng có thể làm theo cách này:
const createdEuity: el = wp.element; el ('div');
Chúng ta cũng có thể thêm các thuộc tính yếu tố chẳng hạn như lớp học
tên hoặc ID
trên tham số thứ hai như sau:
var el = wp.element.createEuity; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
Các div
mà chúng tôi tạo ra sẽ không có ý nghĩa nếu không có nội dung. Chúng ta có thể thêm nội dung vào đối số của tham số thứ ba:
var el = wp.element.createEuity; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Bài viết này là một phần của "Chuỗi hướng dẫn HTML5 / CSS3" của chúng tôi - dành riêng để giúp bạn trở thành một nhà thiết kế và / hoặc nhà phát triển tốt hơn. Nhấp vào đây để xem thêm các bài viết từ cùng một bộ ');
wp.components
Các wp.components
chứa một bộ sưu tập, như tên của nó, các thành phần Gutenberg. Các thành phần này về mặt kỹ thuật là các thành phần tùy chỉnh React bao gồm Nút, Popover, Spinner, Tooltip và một loạt các thành phần khác. Chúng ta có thể tái sử dụng các thành phần này vào Khối riêng của chúng tôi. Trong ví dụ sau, chúng tôi thêm một thành phần nút.
Nút var = wp.components.Button; el (Nút, 'class': 'nút tải xuống',, 'Tải xuống');
Thuộc tính
Thuộc tính là cách lưu trữ dữ liệu trong Khối của chúng tôi, dữ liệu này có thể giống như nội dung, màu sắc, sự sắp xếp, URL, v.v. Chúng tôi có thể nhận được các thuộc tính từ Thuộc tính được truyền trên chỉnh sửa()
chức năng, như sau:
chỉnh sửa: function (props) var content = props.attribut.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', nội dung);
Để cập nhật các thuộc tính, chúng tôi sử dụng setAttribut ()
chức năng. Thông thường, chúng tôi sẽ thay đổi nội dung trên một số hành động nhất định, chẳng hạn như khi nhấp vào nút, đầu vào được điền, tùy chọn được chọn, v.v. Trong ví dụ sau, chúng tôi sử dụng nó để thêm dự phòng nội dung của Khối của chúng tôi trong trường hợp có điều gì đó bất ngờ xảy ra với chúng tôi loạt liên tục
Thuộc tính.
chỉnh sửa: function (props) if (typeof props.attribut.seriesContent === 'không xác định' | ) var content = props.attribut.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', nội dung),];
Cứu khối
Các tiết kiệm()
chức năng hoạt động tương tự như chỉnh sửa()
, ngoại trừ nó xác định nội dung của Khối của chúng tôi để lưu vào cơ sở dữ liệu bài. Việc lưu nội dung Chặn khá đơn giản, như chúng ta có thể thấy dưới đây:
save: function (props) if (! props ||! props.attribut.seriesContent) return; var content = props.attribut.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', nội dung),];
Cái gì tiếp theo?
Gutenberg sẽ thay đổi hệ sinh thái WordPress tốt hơn (hoặc có thể tồi tệ hơn). Nó cho phép các nhà phát triển để áp dụng một cách mới để phát triển các plugin và chủ đề WordPress. Gutenberg chỉ là một sự khởi đầu. Sớm “Khối” mô hình sẽ được mở rộng sang các lĩnh vực khác của WordPress, chẳng hạn như API cài đặt và Widgets.
Tìm hiểu JavaScript sâu sắc; đó là cách duy nhất để vào Gutenberg và phù hợp với tương lai trong ngành công nghiệp WordPress. Nếu bạn đã quen thuộc với những điều cơ bản về JavaScript, những điều kỳ quặc, chức năng, công cụ, hàng hóa và những điều xấu, tôi thực sự chắc chắn rằng bạn sẽ bắt kịp tốc độ với Gutenberg.
Như đã đề cập, Gutenberg trưng bày rất nhiều API, đủ để làm hầu hết mọi thứ cho Khối của bạn. Bạn có thể chọn mã hóa Khối của bạn bằng JavaScript cũ, JavaScript đơn giản với cú pháp ES6, React hoặc thậm chí Vue.
Ý tưởng và cảm hứng
Tôi đã tạo một Khối Gutenberg rất (rất) đơn giản mà bạn có thể tìm thấy trong kho lưu trữ của tài khoản Github của chúng tôi. Hơn nữa, tôi cũng đã tập hợp một số kho lưu trữ từ đó bạn có thể truyền cảm hứng để xây dựng một Khối phức tạp hơn.
- Gutenblocks - Tập hợp các khối của Mathieu Viet được viết bằng JavaScript với Cú pháp ES5
- Dự án Jetpack Gutenblocks - một tập hợp các Khối được gói trong Jetpack
- Danh sách các ví dụ về triển khai Gutenberg, bao gồm cả với Vue.js
Tham khảo thêm
- Kho lưu trữ chính thức của Gutenberg
- Cẩm nang Gutenberg