Gutenberg WordPress Hakkında Bilmeniz Gerekenler 'Son Editör
Gutenberg WordPress için tamamen yeni bir editördür. Geçerli TinyMCE destekli düzenleyiciyi değiştirin. WordPress'i tartışmalı bir şekilde birçok yönden değiştirecek ve hem düzenli son kullanıcıları hem de geliştiricileri, özellikle de WordPress üzerinde çalışmak için editör ekranına bağlı olanları etkileyecek iddialı bir proje. İşte göründüğü gibi.
Gutenberg ayrıca WordPress’te yeni bir paradigma tanıtır. “Blok”.
“Blok” tanımlamak için kullanılan soyut terim biçimlendirme birimleri bir web sayfasının içeriği veya düzeninden oluşur. Bu fikir, bugün WordPress’te neyin elde edildiğine ilişkin kavramları birleştiriyor. kısa kodlar, özel HTML ve keşfi tek bir tutarlı API'ye yerleştirin ve kullanıcı deneyimi.
Projenin Kurulması
Gutenberg’in Tepki’nin üstüne kurulduğunu bilerek, bazı geliştiriciler ... Giriş seviyesi geliştiricileri için Gutenberg'i geliştirmek için bariyer çok yüksek.
React.js'i kurmak, henüz yeni başladıysanız oldukça zaman alıcı ve kafa karıştırıcı olabilir. En azından JSX trafosuna, Babel'e ihtiyacınız olacak, kodunuza bağlı olarak bazı Babel eklentilerine ve Webpack, Rollup veya Parsel gibi bir Bundler'a ihtiyacınız olabilir..
neyse ki, WordPress topluluğundaki bazı insanlar hızlandı Gutenberg'i herkesin izleyebileceği kadar kolay geliştirmeye çalışıyorum. Bugün, bir Gutenberg kazanını üretecek bir aracımız var. hemen kod yazmaya başlayabiliriz araçlar ve konfigürasyonlarla uyumsuzluk yapmak yerine.
Guten Block oluştur
oluşturmak-guten blok
Ahmad Awais'in başlattığı bir projedir. Bu bir sıfır konfigürasyonlu araç takımı (# 0CJS
) React, Webpack, ESNext, Babel, ESLint ve Sass gibi bazı modern istiflere sahip olan Gutenberg bloğunu geliştirmenizi sağlayacaktır. Create Guten Block ile başlamak için talimatları takip edin.
ES5'i kullanma (ECMAScript 5)
Tüm bu araçları kullanarak basit bir oluşturma “Selam Dünya” blok çok fazla görünebilir. Yığınlarınızı yağsız tutmak isterseniz, aşina olabileceğiniz düz bir ECASAScript 5 kullanarak bir Gutenberg bloğu geliştirebilirsiniz. Eğer varsa Bilgisayarınızda yüklü WP-CLI 1.5.0, sadece koşabilirsin…
wp iskele bloğu[--Title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--Kuvvet]
… İçin eklenti veya tema için Gutenberg bloğu kazan plakasını oluşturun. Bu yaklaşım, özellikle, Gutenberg döneminden önce geliştirdiğiniz mevcut eklentiler ve temalar için daha duyarlıdır..
Gutenberg bloklarını yerleştirmek için yeni bir eklenti oluşturmak yerine, blokları eklentilerinize veya temalarınıza entegre etmek isteyebilirsiniz. Ve bu eğitimin herkes için izlemesi kolay hale getirmek için, ECMAScript 5'i WP-CLI ile birlikte kullanacağız.
Yeni Bir Blok Kaydetmek
Gutenberg şu anda bir eklenti olarak geliştirildi ve takım hazır olduğunu hissettiğinde WordPress 5.0 ile birleştirilecek. Bu nedenle, şu an için Eklentiler sayfasında wp-admin
. Yükledikten ve etkinleştirdikten sonra, Windows makinedeyseniz Terminalde veya Komut İstemi'nde aşağıdaki komutu çalıştırın.
wp iskele blok serisi --title = "HTML5 Serisi" --theme
Bu komut şu anda aktif olan temanın bir Blokunu oluşturacaktır. Bloğumuz aşağıdaki dosyalardan oluşacaktır:
. â ?? a ?? â¢Â ?? a ?? â¢A ?? a ?? seri â ?? Â'Ã' Ã' â ?? a ?? â¢Â ?? a ?? â¢A ?? a ?? block.js â ?? Â'Ã' Ã' â ?? a ?? â¢Â ?? a ?? â¢A ?? a ?? editor.css â ?? Â'Ã' Ã' â ?? a ?? â¢Â ?? a ?? â¢A ?? a ?? style.css â ?? a ?? â¢Â ?? a ?? â¢A ?? a ?? series.php
Bloklarımızın ana dosyasını, functions.php
Temamızın:
if (function_exists ('register_block_type'))) get_template_directory () gerektirir. '/Blocks/series.php';
Dosya yükleme koşullu içine alındığına dikkat edin. Bu garanti eder Bloğumuzun yalnızca Gutenberg olduğunda yüklenen önceki WordPress sürümüyle uyumluluğu. Bloğumuz şimdi Gutenberg arayüzünde mevcut olmalı.
Bloğu yerleştirdiğimizde nasıl görünüyor?.
Gutenberg API'leri
Gutenberg, yeni bir Block'a kaydolmak için iki API kümesi sunar. Eğer bakarsak series.php
, yeni Bloğumuzu kaydeden aşağıdaki kodu bulacağız. O da stil sayfasını ve JavaScripts'i ön tarafa ve düzenleyiciye yükler.
register_block_type ('twentyseventeen / series', dizi ('editor_script' => 'seri-blok-editörü', 'editor_style' => 'seri-blok-editörü', 'stil' => 'seri-blok',));
Yukarıda gördüğümüz gibi, Bloğumuzun adı twentyseventeen / seri
, diğer eklentilerin getirdiği diğer bloklarla çarpışmayı önlemek için, Blok adı benzersiz ve ad alanlı olmalıdır..
ayrıca, Gutenberg, etkileşim için bir dizi yeni JavaScript API'si sağlar. “Blok” arayüzey editörde. API oldukça fazla olduğundan, basit ama işleyen bir Gutenberg Bloğu edinmek için bilmeniz gerektiğini düşündüğüm bazı özelliklere odaklanacağız..
wp.blocks.registerBlockType
İlk önce, içine bakıyor olacağız wp.blocks.registerBlockType
. Bu işlev yeni bir kayıt ol “Blok” Gutenberg editörüne. İki argüman gerektirir. İlk argüman, kayıtlara kayıtlı ismi takip etmesi gereken Blok ismidir. register_block_type
PHP tarafında işlev. İkinci argüman bir Block özelliklerini tanımlayan nesne Block arabirimini oluşturmak için başlık, kategori ve birkaç işlev gibi.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategori: 'widgets', anahtar kelimeler: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Bu işlev, içindeki öğeyi oluşturmanıza olanak sağlar. “Blok” yazı editöründe. wp.element.createElement
fonksiyon temel olarak Tepki'nin bir soyutlamasıdır createElement ()
Böylece, aynı argüman kümesini kabul eder. İlk argüman öğenin türünü alır, örneğin bir paragraf, bir karış
, veya bir div
Aşağıda gösterildiği gibi:
wp.element.createElement ( 'div');
Yapabiliriz işlevi değişkene dönüştürmek bu yüzden yazmak daha kısa. Örneğin:
var el = wp.element.createElement; El ( 'div');
Eğer sen yeni ES6 sözdizimini kullanmayı tercih, ayrıca bu şekilde yapabilirsiniz:
const createElement: el = wp.element; El ( 'div');
Biz de eleman özelliklerini ekle benzeri sınıf
isim veya İD
ikinci parametrede aşağıdaki gibi:
var el = wp.element.createElement; el ('div', 'sınıf': 'series-html5', 'id': 'series-html-post-id-001');
div
Yarattığımız içerik olmadan anlam ifade etmeyecek. Yapabiliriz üçüncü parametrenin argümanına içerik ekleyin:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Bu makale "HTML5 / CSS3 Dersleri serisinin" bir parçası - adanmış daha iyi bir tasarımcı ve / veya geliştirici yapmanıza yardımcı olmak için aynı seriden daha fazla makale görmek için burayı tıklayın ');
wp.components
wp.components
Gutenberg bileşenlerinin adından da anlaşılacağı gibi bir koleksiyonu içerir. Bu bileşenler teknik olarak, Button, Popover, Spinner, Tooltip ve diğerleri gibi React özel bileşenleridir. Yapabiliriz bu bileşenleri kendi Bloğumuza tekrar kullanma. Aşağıdaki örnekte, bir düğme bileşeni ekliyoruz.
var Button = wp.components.Button; el (Button, 'class': 'indirme düğmesi',, 'İndirme');
Öznitellikler
Öznitelikler, verileri Bloğumuzda saklamanın yoludur, bu veriler içerik, renkler, hizalamalar, URL vb. Gibi olabilir. Düzenle()
işlevi, aşağıdaki gibi:
edit: function (props) var content = props.attributes.seriesContent; dönüş el ('div', 'sınıf': 'series-html5', 'id': 'seri-html-post-id-001', içerik);
Öznitelikleri güncellemek için, SetAttributes ()
işlevi. Genellikle, bir düğmeye tıklandığında, bir girişin doldurulmasında, bir seçeneğin seçilmesinde, vb. Gibi belirli eylemlerdeki içeriği değiştiririz. Aşağıdaki örnekte, onu eklemek için kullanıyoruz. geri çekil Bloğumuzun içeriği, beklenmedik bir şeyin olması durumunda seriesContent
nitelik.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Merhaba Dünya! İşte geri dönüş içeriği.') ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', içerik),];
Bloğu Kaydetme
kayıt etmek()
işlevi, benzer şekilde çalışır Düzenle()
, ancak post veritabanına kaydetmek için Bloğumuzun içeriğini tanımlar. Blok içeriğini kaydetmek, aşağıda gördüğümüz gibi oldukça kolaydır:
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', içerik),];
Sıradaki ne?
Gutenberg, WordPress ekosistemini daha iyi (veya muhtemelen daha kötüsü) için değiştirecektir. Geliştiricilere sağlar WordPress eklentileri ve temaları geliştirmek için yeni bir yol benimsemek. Gutenberg sadece bir başlangıç. Yakında “Blok” Paradigma, Ayarlar API'leri ve Pencere Öğeleri gibi diğer WordPress alanlarına genişletilecektir..
JavaScript'i Derinden Öğrenin; Gutenberg'e girmenin ve WordPress endüstrisindeki geleceğe bağlı kalmanın tek yolu bu. Eğer JavaScript'in temellerini, tuhaflıklarını, işlevlerini, araçlarını, mallarını ve kötülerini zaten biliyorsanız, Gutenberg ile hız kazanacağınızdan eminim..
Bahsedildiği gibi, Gutenberg, Bloğunuza neredeyse her şeyi yapmak için yeterli miktarda API kullanıyor. Olup olmadığını seçebilirsiniz Bloğunuzu eski bir JavaScript, ES6 sözdizimine sahip JavaScript, React ve hatta Vue ile kodlayın.
Fikirler ve İlhamlar
Github hesabımızın havuzunda bulabileceğiniz çok (çok) basit bir Gutenberg Bloğu oluşturdum. Dahası, daha karmaşık bir Blok inşa etme konusunda ilham alabileceğiniz birkaç havuz oluşturdum..
- Gutenblocks - ES5 Sözdizimi ile JavaScript'te yazılmış Mathieu Viet tarafından bir Blok koleksiyonu
- Jetpack Gutenblocks Projesi - Jetpack'te birleştirilmiş bir Blok koleksiyonu
- Vue.js de dahil olmak üzere Gutenberg Uygulama Örneklerinin Bir Listesi
Ek Referans
- Gutenberg Resmi Depo
- Gutenberg El Kitabı