Gutenberg Yang Perlu Anda Ketahui tentang Editor Terbaru WordPress
Gutenberg adalah editor baru untuk WordPress ganti editor yang diberdayakan TinyMCE saat ini. Ini adalah proyek ambisius yang akan mengubah WordPress dengan banyak cara dan akan memengaruhi pengguna akhir dan pengembang, khususnya, mereka yang bergantung pada layar editor untuk bekerja di WordPress. Ini tampilannya.
Gutenberg juga memperkenalkan paradigma baru di WordPress yang disebut “Blok”.
“Blok” adalah istilah abstrak yang digunakan untuk menggambarkan unit markup yang terdiri dari konten atau tata letak halaman web. Idenya menggabungkan konsep-konsep apa yang ada di WordPress hari ini yang kita capai kode pendek, HTML khusus, dan sematkan penemuan ke dalam satu API yang konsisten dan pengalaman pengguna.
Menyiapkan Proyek
Mengetahui fakta bahwa Gutenberg dibangun di atas React, beberapa pengembang khawatir bahwa penghalang terlalu tinggi untuk pengembang pemula untuk mengembangkan Gutenberg.
Menyiapkan React.js bisa sangat memakan waktu dan membingungkan jika Anda baru saja memulainya. Anda memerlukan setidaknya, transformator JSX, Babel, tergantung pada kode Anda, Anda mungkin memerlukan beberapa plugin Babel, dan Bundler seperti Webpack, Rollup, atau Parcel.
Untung, beberapa orang dalam komunitas WordPress ditingkatkan dan berusaha membuat pengembangan Gutenberg semudah mungkin bagi semua orang untuk mengikuti. Hari ini, kami memiliki alat yang akan menghasilkan boilerplate Gutenberg demikian kita dapat mulai menulis kode segera bukannya bingung dengan alat dan konfigurasi.
Buat Blok Guten
Itu buat-guten-blok
adalah proyek inisiasi oleh Ahmad Awais. Itu adalah kit alat konfigurasi nol (# 0CJS
) yang akan memungkinkan Anda untuk mengembangkan blok Gutenberg dengan beberapa preset tumpukan modern termasuk React, Webpack, ESNext, Babel, ESLint, dan Sass. Ikuti instruksi untuk memulai dengan Buat Blok Guten.
Menggunakan ES5 (ECMAScript 5)
Menggunakan semua alat ini untuk membuat yang sederhana “Halo Dunia” blok mungkin tampak terlalu banyak. Jika Anda ingin menjaga tumpukan Anda ramping, Anda sebenarnya dapat mengembangkan blok Gutenberg menggunakan ECMAScript 5 yang benar-benar bagus yang mungkin sudah Anda kenal. Jika Anda memiliki WP-CLI 1.5.0 diinstal di komputer Anda, Anda cukup menjalankan ...
blok perancah wp[--title = ] [--dashicon = ] [--category = ] [--tema] [--plugin = ] [- memaksa]
... untuk menghasilkan blok pelat Gutenberg ke plugin atau tema Anda. Pendekatan ini lebih masuk akal, khususnya, untuk plugin dan tema yang sudah Anda kembangkan sebelum era Gutenberg.
Alih-alih membuat plugin baru untuk mengakomodasi blok Gutenberg, Anda mungkin ingin mengintegrasikan blok ke plugin atau tema. Dan untuk membuat tutorial ini mudah diikuti untuk semua orang, kita akan menggunakan ECMAScript 5 dengan WP-CLI.
Mendaftarkan Blok Baru
Gutenberg saat ini dikembangkan sebagai plugin dan akan digabungkan ke WordPress 5.0 setiap kali tim merasa sudah siap. Jadi, untuk saat ini, Anda harus menginstalnya dari Halaman plugin wp-admin
. Setelah Anda menginstal dan mengaktifkannya, jalankan perintah berikut di Terminal atau Command Prompt jika Anda menggunakan mesin Windows.
wp scaffold block series --title = "HTML5 Series" --theme
Perintah ini akan menghasilkan Blokir ke tema yang sedang aktif. Blok kami akan terdiri dari file-file berikut:
. SEBUAH¢Â ??  ?? â ??  ?? âA A?? seri â ?? Â'Ã' Ã' â ??  ?? â ??  ?? âA A?? block.js â ?? Â'Ã' Ã' â ??  ?? â ??  ?? âA A?? editor.css â ?? Â'Ã' Ã' â ??  ?? â ??  ?? âA A?? style.css â ??  ?? â ??  ?? âA A?? series.php
Mari memuat file utama dari blok kami di functions.php
dari tema kami:
if (function_exists ('register_block_type')) membutuhkan get_template_directory (). '/blocks/series.php';
Perhatikan bahwa kami melampirkan pemuatan file dengan kondisional. Ini memastikan kompatibilitas dengan versi WordPress sebelumnya yang blok kami hanya dimuat ketika Gutenberg hadir. Blok kami sekarang harus tersedia dalam antarmuka Gutenberg.
Ini tampilannya ketika kita memasukkan blok.
API Gutenberg
Gutenberg memperkenalkan dua set API untuk mendaftarkan Blok baru. Jika kita melihat series.php
, kita akan menemukan kode berikut yang mendaftarkan Blok baru kita. Juga memuat stylesheet dan JavaScripts di front-end dan editor.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'seri-blok-editor', 'editor_style' => 'seri-blok-editor', 'style' => 'blok-blok',));
Seperti yang bisa kita lihat di atas, Blok kita dinamai dua puluh tujuh belas / seri
, nama Blok harus unik dan diberi spasi untuk menghindari tabrakan dengan Blok lain yang dibawa oleh plugin lain.
Selanjutnya, Gutenberg menyediakan satu set API JavaScript baru untuk berinteraksi dengan “Blok” antarmuka di editor. Karena API cukup banyak, kami akan fokus pada beberapa hal spesifik yang menurut saya harus Anda ketahui untuk mendapatkan Blok Gutenberg yang sederhana namun berfungsi.
wp.blocks.registerBlockType
Pertama, kita akan melihat ke dalam wp.blocks.registerBlockType
. Fungsi ini digunakan untuk daftar yang baru “Blok” kepada editor Gutenberg. Itu membutuhkan dua argumen. Argumen pertama adalah nama Blok yang harus mengikuti nama yang terdaftar di register_block_type
berfungsi di sisi PHP. Argumen kedua adalah Objek yang mendefinisikan properti Blok seperti judul, kategori, dan beberapa fungsi untuk membuat antarmuka Blok.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategori: 'widget', kata kunci: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Fungsi ini memungkinkan Anda untuk membuat elemen di dalam “Blok” di editor pos. Itu wp.element.createElement
fungsi pada dasarnya adalah abstraksi dari Bereaksi createElement ()
berfungsi sehingga menerima set argumen yang sama. Argumen pertama mengambil jenis elemen misalnya paragraf, a menjangkau
, atau a div
seperti yang ditunjukkan di bawah ini:
wp.element.createElement ('div');
Kita dapat alias fungsinya menjadi variabel jadi lebih pendek untuk menulis. Sebagai contoh:
var el = wp.element.createElement; el ('div');
Jika kamu lebih suka menggunakan sintaks ES6 baru, Anda juga dapat melakukannya dengan cara ini:
const createElement: el = wp.element; el ('div');
Kita juga bisa tambahkan atribut elemen seperti kelas
nama atau id
pada parameter kedua sebagai berikut:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
Itu div
yang kami buat tidak akan masuk akal tanpa konten. Kita dapat tambahkan konten pada argumen parameter ketiga:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Artikel ini adalah bagian dari "seri Tutorial HTML5 / CSS3" kami - didedikasikan untuk membantu Anda menjadi desainer dan / atau pengembang yang lebih baik. Klik di sini untuk melihat lebih banyak artikel dari seri yang sama ');
komponen wp.
Itu komponen wp.
berisi koleksi, sesuai namanya, komponen Gutenberg. Komponen-komponen ini secara teknis adalah komponen kustom Bereaksi yang meliputi Tombol, Popover, Spinner, Tooltip, dan banyak lainnya. Kita dapat menggunakan kembali komponen-komponen ini ke dalam Blok kita sendiri. Pada contoh berikut, kami menambahkan komponen tombol.
var Button = wp.components.Button; el (Tombol, 'kelas': 'tombol unduh',, 'Unduh');
Atribut
Atribut adalah cara untuk menyimpan data di Blok kami, data ini bisa seperti konten, warna, keberpihakan, URL, dll. Kita bisa mendapatkan atribut dari Properti yang diteruskan pada edit ()
fungsi, sebagai berikut:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', konten);
Untuk memperbarui Atribut, kami menggunakan setAttributes ()
fungsi. Biasanya kami akan mengubah konten pada tindakan tertentu seperti ketika tombol diklik, input diisi, opsi dipilih, dll. Dalam contoh berikut, kami menggunakannya untuk menambahkan mundur isi Blok kami jika terjadi sesuatu yang tidak terduga pada kami seriContent
Atribut.
sunting: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Ini konten yang mundur.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', konten),];
Menyimpan Blokir
Itu menyimpan()
fungsi bekerja mirip dengan edit ()
, kecuali itu mendefinisikan konten Blok kami untuk menyimpan ke database posting. Menyimpan konten Blokir cukup mudah, seperti yang dapat kita lihat di bawah:
save: function (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', konten),];
Apa berikutnya?
Gutenberg akan mengubah ekosistem WordPress menjadi lebih baik (atau mungkin lebih buruk). Ini memungkinkan pengembang untuk mengadopsi cara baru mengembangkan plugin dan tema WordPress. Gutenberg hanyalah awal. Segera saja “Blok” paradigma akan diperluas ke area lain di WordPress seperti API Pengaturan dan Widget.
Pelajari JavaScript Sangat; itu satu-satunya cara untuk masuk ke Gutenberg dan tetap relevan dengan masa depan di industri WordPress. Jika Anda sudah terbiasa dengan dasar-dasar JavaScript, keanehan, fungsi, alat, barang, dan hal-hal buruk, saya benar-benar yakin Anda akan mempercepat dengan Gutenberg.
Seperti yang disebutkan, Gutenberg memaparkan banyak API, cukup untuk melakukan hampir semua hal untuk Blok Anda. Anda dapat memilih apakah akan kode Blokir Anda dengan JavaScript lama yang polos, JavaScript dengan sintaksis ES6, Bereaksi, atau bahkan Vue.
Gagasan dan Inspirasi
Saya telah membuat Blok Gutenberg yang sangat (sangat) sederhana yang dapat Anda temukan di repositori akun Github kami. Selain itu, saya juga telah mengumpulkan sejumlah repositori dari mana Anda dapat mendorong inspirasi untuk membangun Blok yang lebih kompleks.
- Gutenblocks - Kumpulan Blok oleh Mathieu Viet yang ditulis dalam JavaScript dengan Sintaks ES5
- Proyek Jetpack Gutenblocks - koleksi Blok yang dipaketkan di Jetpack
- Daftar Contoh Implementasi Gutenberg termasuk dengan Vue.js
Referensi Lebih Lanjut
- Repositori Resmi Gutenberg
- Buku Pegangan Gutenberg