Blog
Iznad osnovnih blokova: Izrada prilagođenih Gutenberg blokova za poboljšanu funkcionalnost WordPressa
Otključajte puni potencijal WordPress uređivača blokova učenjem kako izraditi vlastite prilagođene Gutenberg blokove. Ovaj vodič pruža praktične korake, primjere koda i najbolje prakse za proširenje funkcionalnosti i dizajna vaše web-lokacije.

Sažetak
WordPress uređivač blokova, Gutenberg, revolucionirao je stvaranje sadržaja svojim modularnim sustavom blokova. Iako osnovni blokovi nude svestranost, prilagođeni blokovi su ključni za jedinstvene funkcionalnosti i brendiranje. Ovaj članak vodi vas kroz proces razvoja vlastitih Gutenberg blokova, pokrivajući bitne koncepte poput registracije blokova, atributa i renderiranja. Istražit ćemo praktične primjere, raspraviti najbolje prakse za organizaciju koda i sigurnost te istaknuti kako se prilagođeni blokovi integriraju s WordPress arhitekturom i kvačicama. Ovladavanjem razvojem prilagođenih blokova, možete značajno poboljšati mogućnosti i korisničko iskustvo vaše WordPress web-lokacije.
Iznad osnovnih blokova: Izrada prilagođenih Gutenberg blokova za poboljšanu funkcionalnost WordPressa
Pojava Gutenberg uređivača blokova u WordPressu 5.0 označila je značajan pomak u načinu na koji se sadržaj stvara i upravlja. Odmičući se od linearnog pristupa klasičnog uređivača, Gutenberg je uveo modularni sustav gdje se sadržaj gradi pomoću diskretnih "blokova". Iako zadani skup blokova pokriva širok raspon uobičajenih potreba, mnoge web-lokacije zahtijevaju jedinstvene funkcionalnosti, specifične dizajnerske elemente ili integracije koje nadilaze ono što je lako dostupno. Tu dolazi razvoj prilagođenih Gutenberg blokova, nudeći moćan način proširenja WordPress mogućnosti i preciznog prilagođavanja zahtjevima vašeg projekta.
Razvoj prilagođenih blokova omogućuje vam stvaranje ponovno upotrebljivih komponenti koje pojednostavljuju stvaranje sadržaja za urednike, osiguravaju dosljednost brenda i implementiraju složene značajke izravno unutar sučelja uređivača. Ovaj vodič provest će vas kroz proces, od razumijevanja osnova do implementacije najboljih praksi za robusne i održive prilagođene blokove.
Razumijevanje arhitekture uređivača blokova
Prije nego što zaronite u razvoj, ključno je shvatiti kako Gutenberg i njegovi blokovi funkcioniraju unutar WordPress ekosustava. Sam WordPress izgrađen je na modularnoj PHP i MySQL arhitekturi. Teme kontroliraju prezentaciju, a dodaci dodaju funkcionalnost. Gutenberg, kao osnovna značajka WordPressa, besprijekorno se integrira u ovu strukturu. Koristi JavaScript (uglavnom React) za dinamično iskustvo uređivanja u pregledniku, dok PHP obrađuje registraciju i renderiranje na strani poslužitelja.
Prilagođeni blokovi su u suštini JavaScript komponente koje se registriraju kod WordPressa. Kada korisnik doda prilagođeni blok u objavu ili stranicu, Gutenberg pohranjuje njegovu konfiguraciju (atribute) u bazu podataka. Prilikom renderiranja objave na front-endu, WordPress koristi PHP za tumačenje ove konfiguracije i izlaz odgovarajućeg HTML-a, često koristeći istu JavaScript komponentu ili zasebnu PHP predložak.
Ključne komponente prilagođenog bloka
Svaki prilagođeni Gutenberg blok, u svojoj srži, sastoji se od nekoliko ključnih dijelova:
- Registracija: Ovo je proces obavještavanja WordPressa o vašem novom bloku. Uključuje definiranje njegovog imena, naslova, ikone i drugih metapodataka. Ovo se uglavnom radi pomoću JavaScript funkcije
registerBlockType. - Atributi: Ovo su polja podataka povezana s vašim blokom. Zamislite ih kao postavke ili svojstva koja korisnik može mijenjati za određenu instancu bloka (npr. tekstualni sadržaj, URL slike, odabir boje). Atributi se definiraju u JavaScript registraciji bloka.
- Funkcija uređivanja (
edit): Ova JavaScript funkcija definira kako blok izgleda i ponaša se unutar Gutenberg uređivača. Ovdje gradite interaktivno korisničko sučelje koje će kreatori sadržaja koristiti za konfiguraciju bloka. - Funkcija spremanja (
save): Ova JavaScript funkcija definira statički HTML označni kod koji će se spremiti u bazu podataka i renderirati na front-endu vaše web-lokacije. Trebao bi odražavati trenutno stanje atributa bloka.
Korak po korak: Izrada vašeg prvog prilagođenog bloka
Stvorit ćemo jednostavan prilagođeni blok koji prikazuje "Poziv na akciju" (CTA) s naslovom i gumbom. Ovaj primjer će se usredotočiti na bitne JavaScript aspekte za registraciju i uređivanje blokova, pretpostavljajući da je postavljen osnovni WordPress razvojni okoliš.
Preduvjeti:
- Lokalno WordPress razvojno okruženje.
- Osnovno razumijevanje JavaScripta, Reacta i PHP-a.
- Instalirani Node.js i npm (ili yarn) za kompilaciju resursa.
1. Postavljanje projekta:
Prilagođeni blokovi se obično razvijaju kao dio dodatka. Stvorite novu datoteku dodatka (npr. my-custom-blocks/my-custom-blocks.php) i JavaScript datoteku za vaš blok (npr. src/index.js). Također će vam trebati proces izgradnje za kompilaciju vašeg JavaScripta. Uobičajeni pristup je korištenje @wordpress/scripts koji pruža prikladan način za rukovanje kompilacijom.
U korijenskom direktoriju vašeg dodatka, stvorite package.json datoteku:
{
"name": "my-custom-blocks",
"version": "1.0.0",
"description": "Dodatak za prilagođene Gutenberg blokove.",
"main": "index.js",
"scripts": {
"build": "wp-scripts build",
"start": "wp-scripts start"
},
"keywords": ["wordpress", "gutenberg", "block"],
"author": "Vaše Ime",
"license": "GPL-2.0-or-later",
"devDependencies": {
"@wordpress/scripts": "^26.0.0"
}
}
Instalirajte ovisnosti: npm install.
2. Registracija bloka (JavaScript):
U vašoj src/index.js datoteci, koristit ćete registerBlockType iz @wordpress/blocks paketa.
import { registerBlockType } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
// Uvoz komponenti za uređivač
import { Edit } from './edit';
import { Save } from './save';
registerBlockType( 'my-custom-blocks/cta', {
title: __( 'Poziv na akciju', 'my-custom-blocks' ),
icon: 'megaphone',
category: 'widgets',
attributes: {
headline: {
type: 'string',
default: '',
},
buttonText: {
type: 'string',
default: 'Saznajte više',
},
buttonUrl: {
type: 'string',
default: '#',
},
},
edit: Edit,
save: Save,
} );
3. Definiranje sučelja uređivača (src/edit.js):
Ova komponenta obrađuje kako blok izgleda i funkcionira unutar uređivača.
import { __ } from '@wordpress/i18n';
import { useBlockProps, RichText, InspectorControls } from '@wordpress/block-editor';
import { PanelBody, TextControl } from '@wordpress/components';
export const Edit = ( { attributes, setAttributes } ) => {
const blockProps = useBlockProps();
const onChangeHeadline = ( newHeadline ) => {
setAttributes( { headline: newHeadline } );
};
const onChangeButtonText = ( newButtonText ) => {
setAttributes( { buttonText: newButtonText } );
};
const onChangeButtonUrl = ( newButtonUrl ) => {
setAttributes( { buttonUrl: newButtonUrl } );
};
return (
<>
<InspectorControls>
<PanelBody title={ __( 'Postavke gumba', 'my-custom-blocks' ) }>
<TextControl
label={ __( 'Tekst gumba', 'my-custom-blocks' ) }
value={ attributes.buttonText }
onChange={ onChangeButtonText }
/>
<TextControl
label={ __( 'URL gumba', 'my-custom-blocks' ) }
value={ attributes.buttonUrl }
onChange={ onChangeButtonUrl }
/>
</PanelBody>
</InspectorControls>
<div { ...blockProps }>
<RichText
tagName="h3"
placeholder={ __( 'Unesite svoj naslov ovdje...', 'my-custom-blocks' ) }
value={ attributes.headline }
onChange={ onChangeHeadline }
allowedFormats={ [ 'core/bold', 'core/italic' ] }
/>
<a href={ attributes.buttonUrl } className="wp-element-button">
{ attributes.buttonText }
</a>
</div>
</>
);
};
4. Definiranje funkcije spremanja (src/save.js):
Ova funkcija određuje HTML izlaz za front-end.
import { useBlockProps, RichText } from '@wordpress/block-editor';
export const Save = ( { attributes } ) => {
const blockProps = useBlockProps.save();
return (
<div { ...blockProps }>
<RichText.Content
tagName="h3"
value={ attributes.headline }
/>
<a href={ attributes.buttonUrl } className="wp-element-button">
{ attributes.buttonText }
</a>
</div>
);
};
5. Uključivanje skripte bloka (PHP):
U vašoj glavnoj datoteci dodatka (my-custom-blocks.php), morate registrirati i uključiti vašu kompiliranu JavaScript datoteku.
<?php
/**
* Naziv dodatka: Moji prilagođeni blokovi
* Opis: Dodaje prilagođene Gutenberg blokove.
* Verzija: 1.0
* Autor: Vaše Ime
*/
function my_custom_blocks_register_block() {
// Automatski učitava block.json datoteku i uključuje skriptu.
register_block_type( __DIR__ . '/build' );
}
add_action( 'init', 'my_custom_blocks_register_block' );
?>
6. Izrada resursa:
Pokrenite npm run build u direktoriju vašeg dodatka. Ovo će kompilirati vaš JavaScript u build mapu.
Sada aktivirajte dodatak u WordPressu. Trebali biste vidjeti svoj "Poziv na akciju" blok dostupan u uređivaču!
Najbolje prakse za razvoj prilagođenih blokova
Razvoj prilagođenih blokova nadilazi samo njihovo funkcionalno djelovanje. Pridržavanje najboljih praksi osigurava da su vaši blokovi sigurni, učinkoviti, pristupačni i održivi.
- Imenovanje (Namespacing): Uvijek koristite jedinstveni imenski prostor za svoj blok (npr.
my-custom-blocks/cta). Ovo sprječava sukobe s drugim blokovima.registerBlockTypefunkcija to obrađuje. - Organizacija koda: Neka vaš JavaScript i PHP kod budu čisti i dobro organizirani. Za složene blokove, razmislite o razbijanju vašeg JavaScripta na manje, ponovno upotrebljive komponente.
- Sigurnost:
- Sanitizacija: Prilikom spremanja podataka u bazu podataka (posebno sadržaja generiranog od korisnika), uvijek ih sanitizirajte. WordPress pruža funkcije poput
sanitize_text_field,esc_url, itd. - Bijeg (Escaping): Prilikom izlaza podataka u preglednik, uvijek ih bijegnite kako biste spriječili napade unakrsnog skriptiranja (XSS). Koristite funkcije poput
esc_html,esc_attr,esc_url. - Nonces: Za sve AJAX zahtjeve ili slanje obrazaca povezane s vašim blokom, koristite nonces za provjeru potječe li zahtjev iz legitimnog WordPress izvora.
- Sanitizacija: Prilikom spremanja podataka u bazu podataka (posebno sadržaja generiranog od korisnika), uvijek ih sanitizirajte. WordPress pruža funkcije poput
- Internacionalizacija (i18n): Koristite
__()i_x()funkcije (iz@wordpress/i18n) za sve korisničke nizove u vašem JavaScriptu. Ovo čini vaš blok prevedivim. - Pristupačnost: Osigurajte da je vaš blok upotrebljiv za sve. Koristite semantički HTML, pružite ARIA atribute gdje je potrebno i testirajte sa čitačima zaslona.
- Performanse:
- Odgođeno učitavanje (Lazy Loading): Za blokove koji učitavaju teške resurse ili složene podatke, razmislite o implementaciji tehnika odgođenog učitavanja.
- Učinkovito renderiranje: Optimizirajte svoju
savefunkciju i bilo koje renderiranje na strani poslužitelja kako bi bilo što učinkovitije. - Uključivanje resursa: Uključite samo potrebne skripte i stilove za vaš blok. Koristite
enqueue_block_styleienqueue_block_script_handleza resurse specifične za blok.
- Modularnost i proširivost: Iskoristite WordPress kvačice (akcije i filtere) unutar vašeg PHP-a kako biste omogućili drugim dodacima ili temama da izmijene ponašanje ili izlaz vašeg bloka.
block.json: Za složenije blokove, koristiteblock.jsondatoteku za deklariranje metapodataka bloka, ovisnosti, stilova i rukovatelja skripti. Ovo je moderan standard za razvoj blokova i pojednostavljuje upravljanje resursima.
Integracija s WordPress arhitekturom
Prilagođeni blokovi nisu izolirani entiteti. Duboko se integriraju s osnovnom arhitekturom WordPressa:
- Kvačice (Hooks): Možete koristiti PHP akcije i filtere u svom dodatku za izmjenu registracije blokova, dodavanje prilagođenih stilova ili skripti uvjetno, ili čak izmjenu renderiranog izlaza osnovnih blokova. Na primjer, možete koristiti
block_type_metadata_settingsfilter za izmjenu postavki registriranog bloka. - Integracija s temom: Teme temeljene na blokovima i Potpuno uređivanje web-mjesta (FSE) uvelike se oslanjaju na blokove. Prilagođeni blokovi mogu biti dizajnirani da se besprijekorno uklapaju u FSE predloške, omogućujući korisnicima da grade cijele web-lokacije koristeći dosljedan tijek rada temeljen na blokovima.
- Interoperabilnost dodataka: Vaši prilagođeni blokovi mogu komunicirati s drugim dodacima. Na primjer, prilagođeni blok proizvoda mogao bi povući podatke iz dodatka za e-trgovinu, ili prilagođeni blok galerije mogao bi se integrirati sa specifičnim dodatkom za medijsku biblioteku.
Napredni koncepti i razmatranja
- Renderiranje na strani poslužitelja (SSR): Za blokove koji zahtijevaju dinamičke podatke ili složenu logiku koja se najbolje obrađuje na poslužitelju, možete implementirati renderiranje na strani poslužitelja. Ovo uključuje definiranje
render_callbackfunkcije u vašem PHP-u prilikom registracije bloka. - Dinamički blokovi: Blokovi koji koriste SSR često se nazivaju dinamičkim blokovima. Oni ne spremaju statički HTML u bazu podataka; umjesto toga, spremaju samo svoje atribute, a
render_callbackgenerira HTML pri svakom učitavanju stranice. - Stilovi blokova: Možete definirati prilagođene stilove za svoje blokove koje korisnici mogu odabrati unutar uređivača.
- Varijacije blokova: Stvorite varijacije osnovnog bloka kako biste ponudili unaprijed konfigurirane verzije s različitim zadanim postavkama ili izgledom.
- Razlike između uređivača i front-enda: Imajte na umu da
editisavefunkcije možda trebaju obrađivati različite scenarije.editfunkcija je za interaktivno iskustvo uređivača, dok jesavefunkcija za statički HTML izlaz. Ponekad vam može zatrebati zasebnirender_callbackza dinamičko renderiranje na front-endu.
Zaključak
Razvoj prilagođenih Gutenberg blokova moćna je vještina koja otključava novu razinu prilagodbe i funkcionalnosti za WordPress web-lokacije. Razumijevanjem ključnih komponenti—registracije, atributa, funkcija uređivanja i spremanja—te pridržavanjem najboljih praksi za sigurnost, performanse i pristupačnost, možete stvoriti robusne, ponovno upotrebljive i korisniku ugodne blokove. Bilo da gradite prilagođeni dodatak za klijenta ili poboljšavate vlastitu web-lokaciju, ovladavanje prilagođenim blokovima značajno će podići vaše WordPress razvojne sposobnosti, omogućujući vam da nadiđete standardne ponude i izradite uistinu jedinstvena digitalna iskustva.