Fejlesztőknek: elemek regisztrálása
Saját elem hozzáadása a YayMail szerkesztőhöz: PHP-regisztráció és a szerkesztő oldali React-komponens.
Egy saját elem két részből áll: a PHP-oldali regisztrációból (ez mondja meg a YayMailnek, hogy az elem létezik) és a szerkesztő oldali, JavaScript/React komponensből (ez rajzolja ki az elemet a szerkesztő vásznán).
1. PHP-oldal
Szekció neve “1. PHP-oldal”Az elemet a yaymail_register_elements akcióra kapcsolódva regisztrálod. Az akció megkapja az elemeket kezelő szolgáltatást, amelynek a register_element() metódusával adod át az elemed példányát:
function register_new_element( $element_service ) { $element_service->register_element( new \YourNewElement() );}add_action( 'yaymail_register_elements', 'register_new_element' );
// A szerkesztő a WordPress saját React-jét használjafunction enqueue_wp_react_scripts() { wp_enqueue_script( 'wp-react' );}add_action( 'wp_enqueue_scripts', 'enqueue_wp_react_scripts' );Az elem osztályát (YourNewElement) a következő fejezet írja le.
2. Szerkesztő oldal (JavaScript/React)
Szekció neve “2. Szerkesztő oldal (JavaScript/React)”A szerkesztő betöltődése után a böngészőben egy yaymail-loaded esemény váltódik ki. Erre figyelve a window.yaymailData.shared.stores.useAddonStore tárolón keresztül regisztrálod a komponenst a registerElement() hívással. Az első paraméter az elem típusa (itt new_element), és meg kell egyeznie a PHP-osztály $type értékével.
document.addEventListener( 'yaymail-loaded', () => { window.yaymailData.shared?.stores?.useAddonStore ?.getState() .registerElement( 'new_element', NewElement );});A komponens felépítése
Szekció neve “A komponens felépítése”A komponens megkapja az element tulajdonságot, amelynek data mezőjében az elem beállításai vannak. A szerkesztő eszközei a window.yaymailData.shared alatt érhetők el:
| Eszköz | Mire jó |
|---|---|
core_components.ElementWrapper |
Az elem körüli burkoló: ez adja a kijelölést, az eszköztárat és a húzhatóságot. Az element és a style tulajdonságot kell átadni neki. |
hooks.useShortcode → doShortcode() |
A szövegben lévő shortcode-ok kiértékelése a szerkesztő előnézetében. |
A komponens a data mezőkből (cím, tartalom, színek, térköz, betűtípus) számolja a stílusokat, a szövegeket pedig a doShortcode()-on engedi át. A burkolónak adott stílusba kerül a háttérszín, a térköz (padding) és a betűcsalád. A tartalom egy new_element-container osztályú tárolóban van: egy címsor (h2) és egy tartalmi div.
Két megvalósítási mód használható:
- Sima JavaScript: a WordPress
wp.reactobjektumánakcreateElementfüggvényével építed a fát, hibakezelésként egytry/catchággal „Error loading element” üzenetet adsz vissza. - JSX/TypeScript (építési lépéssel): a
useMemosegítségével csak akkor számolod újra a szöveget és a stílust, ha a hozzájuk tartozó adat változik.
Mindkét esetben a komponens alapértelmezett exportja a függvény, és az adat hiányára is felkészülsz (például data.title || '').
Készült: