Gutenberg Anda Perlu Tahu Mengenai Editor Terkini WordPress
Gutenberg adalah editor baru untuk WordPress yang akan sama sekali menggantikan editor berkuasa TinyMCE semasa. Ia merupakan projek yang bercita-cita tinggi yang boleh dikatakan mengubah WordPress dalam pelbagai cara dan akan memberi kesan kepada kedua pengguna dan pemaju akhir biasa, khususnya, mereka yang bergantung pada skrin editor untuk bekerja di WordPress. Inilah caranya.
Gutenberg juga memperkenalkan paradigma baru dalam WordPress yang dipanggil “Blok”.
“Blok” adalah istilah abstrak yang digunakan untuk menggambarkan unit markup yang terdiri daripada bentuk kandungan atau susun atur laman web. Idea ini menggabungkan konsep-konsep dalam WordPress hari ini kod pendek, HTML tersuai, dan menanamkan penemuan ke API konsisten tunggal dan pengalaman pengguna.
Menyediakan Projek
Mengetahui fakta bahawa Gutenberg dibina di atas React, sesetengah pemaju bimbang bahawa halangan terlalu tinggi untuk pemaju peringkat kemasukan untuk membangunkan Gutenberg.
Menyediakan React.js boleh agak memakan masa dan membingungkan jika anda baru memulakannya. Anda perlu sekurang-kurangnya, pengubah JSX, Babel, bergantung kepada kod anda, anda mungkin memerlukan beberapa plugin Babel, dan Bundler seperti Webpack, Rollup, atau Parcel.
Mujurlah, sesetengah orang dalam komuniti WordPress melangkah dan cuba membuat Gutenberg berkembang semudah mungkin untuk semua orang mengikutinya. Hari ini, kami mempunyai alat yang akan menghasilkan satu boilerplate Gutenberg kita boleh mula menulis kod dengan serta-merta bukannya dengan alat dan konfigurasi.
Buat Blok Guten
The buat-guten-block
adalah projek inisiatif oleh Ahmad Awais. Ianya adalah kit alat konfigurasi sifar (# 0CJS
) yang membolehkan anda membangunkan blok Gutenberg dengan beberapa pratetap moden termasuk React, Webpack, ESNext, Babel, ESLint, dan Sass. Ikut arahan untuk bermula dengan Membuat Guten Block.
Menggunakan ES5 (ECMAScript 5)
Menggunakan semua alat ini untuk membuat mudah “Hai dunia” blok mungkin kelihatan terlalu banyak. Sekiranya anda ingin mengekalkan susunan anda, anda sebenarnya dapat mengembangkan blok Gutenberg dengan menggunakan 'ECMAScript 5' biasa yang mungkin sudah anda kenal dengannya. Jika anda mempunyai WP-CLI 1.5.0 dipasang pada komputer anda, anda hanya boleh menjalankan ...
blok perancah wp[--title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--force]
... kepada menjanakan boilerplate blok Gutenberg pada plugin atau tema anda. Pendekatan ini lebih masuk akal, terutamanya, untuk plugin dan tema sedia ada yang telah anda usahakan sebelum era Gutenberg.
Daripada membuat plugin baru untuk menampung blok Gutenberg, anda mungkin mahu mengintegrasikan blok ke plugin atau tema anda. Dan untuk membuat tutorial ini mudah diikuti untuk semua orang, kami akan menggunakan ECMAScript 5 dengan WP-CLI.
Mendaftarkan Blok Baru
Gutenberg kini dibangunkan sebagai plugin dan akan digabungkan kepada WordPress 5.0 setiap kali pasukan merasakan ia siap. Oleh itu, pada masa ini, anda perlu memasangnya dari Halaman pemalam dalam wp-admin
. Sebaik sahaja anda memasang dan mengaktifkannya, jalankan arahan berikut di Terminal atau Prompt Perintah jika anda berada di mesin Windows.
wp scaffold block series --title = "HTML5 Series" --theme
Perintah ini akan menghasilkan Blok ke tema yang sedang aktif. Blok kami akan mengandungi fail berikut:
. â ??  ?? â ??  ?? â ??  ?? siri â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? block.js â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? editor.css â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? siri.php
Mari kita muatkan fail utama blok kami di dalam functions.php
tema kami:
jika (function_exists ('register_block_type')) memerlukan get_template_directory (). '/blocks/series.php';
Perhatikan bahawa kami menyertakan pemuatan fail dengan bersyarat. Ini memastikan keserasian dengan versi WordPress sebelumnya bahawa blok kami hanya dimuatkan apabila Gutenberg hadir. Blok kami kini boleh didapati di antara muka Gutenberg.
Ini bagaimana rupanya apabila kita memasukkan blok tersebut.
API Gutenberg
Gutenberg memperkenalkan dua set API untuk mendaftarkan Blok baru. Jika kita melihat siri.php
, kami akan mencari kod berikut yang mendaftarkan Blok baru kami. Ia juga memuatkan stylesheet dan JavaScript di bahagian depan dan editor.
register_block_type ('twentyseventeen / siri', array ('editor_script' => 'siri-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'block-series',));
Seperti yang dapat kita lihat di atas, Blok kami dinamakan twentyseventeen / siri
, Nama Blok mesti unik dan nama-nama untuk mengelakkan perlanggaran dengan Blok lain yang dibawa oleh plugin lain.
Tambahan pula, Gutenberg menyediakan satu set API JavaScript yang baru untuk berinteraksi dengan “Blok” antara muka dalam editor. Oleh kerana API cukup banyak, kami akan memberi tumpuan kepada beberapa spesifik yang saya fikir perlu tahu untuk mendapatkan Blok Gutenberg yang mudah tetapi berfungsi.
wp.blocks.registerBlockType
Pertama, kita akan melihat wp.blocks.registerBlockType
. Fungsi ini digunakan untuk daftar baru “Blok” kepada editor Gutenberg. Ia memerlukan dua hujah. Hujah pertama ialah nama Blok yang harus mengikut nama yang didaftarkan di register_block_type
berfungsi di sisi PHP. Hujah kedua adalah Objek menentukan sifat Blok seperti tajuk, kategori, dan beberapa fungsi untuk menjadikan antara muka Blok.
var registerBlockType = wp.blocks.registerBlockType; [] html '], edit: function (props) , save: function (props) );
wp.element.createElement
Fungsi ini membolehkan anda membuat elemen dalam “Blok” dalam editor pos. The wp.element.createElement
Fungsi pada dasarnya adalah abstraksi React createElement ()
berfungsi dengan demikian ia menerima set argumen yang sama. Argumen pertama mengambil jenis elemen sebagai contoh perenggan, a span
, atau a div
seperti yang ditunjukkan di bawah:
wp.element.createElement ('div');
Kita boleh alias fungsi menjadi pemboleh ubah jadi lebih pendek untuk menulis. Sebagai contoh:
var el = wp.element.createElement; el ('div');
Jika awak lebih suka menggunakan sintaks ES6 baru, anda juga boleh melakukannya dengan cara ini:
const createElement: el = wp.element; el ('div');
Kita boleh juga tambah sifat unsur seperti kelas
nama atau ID
pada parameter kedua seperti berikut:
var el = wp.element.createElement; el ('div', 'class': 'siri-html5', 'id': 'siri-html-post-id-001');
The div
yang kami buat tidak masuk akal tanpa kandungan. Kita boleh tambah kandungan pada hujah parameter ketiga:
var el = wp.element.createElement; Artikel ini adalah sebahagian daripada "Tutorial HTML5 / CSS3 tutorial" kami - khusus untuk membantu anda membuat pereka dan / atau pemaju yang lebih baik. Klik di sini untuk melihat lebih banyak rencana dari siri yang sama ');
wp.components
The wp.components
mengandungi koleksi, seperti namanya, komponen Gutenberg. Komponen-komponen ini secara teknis adalah komponen Custom React yang termasuk Button, Popover, Spinner, Tooltip, dan sekumpulan orang lain. Kita boleh gunakan semula komponen ini ke Blok kami sendiri. Dalam contoh berikut, kami menambah komponen butang.
var Button = wp.components.Button; el (Button, 'class': 'download-button',, 'Muat turun');
Atribut
Atribut adalah cara untuk menyimpan data dalam Blok kami, data ini mungkin seperti kandungan, warna, penjajaran, URL, dll. Kita boleh mendapatkan sifat-sifat dari Properties yang diluluskan pada edit ()
fungsi, seperti berikut:
edit: fungsi (props) var content = props.attributes.seriesContent; kembali el ('div', 'class': 'siri-html5', 'id': 'siri-html-post-id-001', kandungan);
Untuk mengemas kini Atribut, kami menggunakan setAttributes ()
fungsi. Biasanya kami akan menukar kandungan pada tindakan tertentu seperti apabila butang diklik, input diisi, pilihan dipilih, dan lain-lain. Dalam contoh berikut, kami menggunakannya untuk menambah belakang kandungan Blok kami sekiranya sesuatu yang tidak dijangka berlaku kepada kami siri kandungan
Atribut.
edit: fungsi (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Here is the fallback content.' ) var content = props.attributes.seriesContent; kembali [el ('div', 'class': 'siri-html5', 'id': 'siri-html-post-id-001', kandungan),];
Menyimpan Blok
The simpan ()
fungsi berfungsi sama dengan edit ()
, kecuali ia mentakrifkan kandungan Blok kami untuk disimpan ke pangkalan data pos. Menyimpan kandungan Blok agak mudah seperti yang dapat kita lihat di bawah:
simpan: fungsi (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; kembali [el ('div', 'class': 'siri-html5', 'id': 'siri-html-post-id-001', kandungan),];
Apa yang akan datang?
Gutenberg akan mengubah ekosistem WordPress untuk lebih baik (atau mungkin lebih buruk). Ia membolehkan pemaju untuk mengguna pakai cara baharu untuk membangunkan plugin dan tema WordPress. Gutenberg hanya permulaan. Tidak lama kemudian “Blok” paradigma akan diperluas ke kawasan WordPress lain seperti API Tetapan dan Widget.
Belajar JavaScript secara mendalam; ini satu-satunya cara untuk masuk ke Gutenberg dan kekal relevan dengan masa hadapan dalam industri WordPress. Sekiranya anda sudah terbiasa dengan asas JavaScript, kebiasaan, fungsi, alat, barangan dan buruk, saya yakin anda akan mendapat kelajuan dengan Gutenberg.
Seperti yang dinyatakan, Gutenberg mendedahkan banyak API, cukup untuk melakukan apa sahaja untuk Blok anda. Anda boleh memilih sama ada kod Blok anda dengan JavaScript lama biasa, JavaScript dengan sintaks ES6, React, atau bahkan Vue.
Idea dan Inspirasi
Saya telah membuat Blok Gutenberg yang sangat (sangat) mudah yang anda dapati dalam repositori akaun Github kami. Selain itu, saya juga mengumpulkan beberapa repositori dari mana anda boleh mendorong inspirasi untuk membina Blok yang lebih kompleks.
- Gutenblocks - Koleksi Blok oleh Mathieu Viet yang ditulis dalam JavaScript dengan Sintaks ES5
- Projek Jetpack Gutenblocks - koleksi Blok dibundel di Jetpack
- Senarai Senarai Pelaksanaan Gutenberg termasuk dengan Vue.js
Rujukan lanjut
- Repositori Rasmi Gutenberg
- Buku Panduan Gutenberg