Kun rekisteröit ja tallennat attribuutteja WordPressin lohkoeditorissa (Gutenberg), sinulla on mahdollisuus tallentaa ne post-meta-muodossa tavallisten lohkoattribuuttien sijaan.
Tällä menetelmällä lohkossasi voi olla asetus, joka voi ohjata jotain viestien leveyttä tai mallia.
Tärkeä huomautus viestien metaattribuuttien renderöimisestä
Et voi hahmontaa postin metaattribuutteja JavaScript-tallennusmenetelmällä. Gutenberg-tiimi päätti estää tämän, koska post-meta-kenttiä renderöineet lohkot voivat helposti rikkoutua post-metan vaihtuessa muualla postauksessa.
Tässä oppaassa aiomme laajentaa sitä, mitä olemme jo rakentaneet WordPress Gutenberg -laajennusoppaassamme ja myös Dynamic Block -oppaassa.
Edellytykset
- Tutustu WordPress Gutenbergin lisäosien luomiseen
- Tutustu dynaamisiin lohkoihin ja palvelinpuolen renderöintiin
Post Metan rekisteröinti PHP:ssä
Ennen kuin voimme käyttää post-metakenttää JavaScriptissä, meidän on varmistettava, että olemme rekisteröineet sen PHP:ssä register_metaja että show_in_restargumentti on asetettu tosi.
Jatka Dynamic Block -opasta, avaa laajennuksen PHP-juuritiedosto (tässä tapauksessa wholesome-plugin.php) ja lisää seuraava koodi tiedoston alaosaan kaikkien muiden toimintojen jälkeen:
function wholesomecode_wholesome_plugin_register_post_meta() {
register_meta(
'post',
'_wholesomecode_wholesome_plugin_block_text',
[
'auth_callback' => '__return_true',
'default' => __( 'Wholesome Plugin – hello from the editor!', 'wholesome-plugin' ),
'show_in_rest' => true,
'single' => true,
'type' => 'string',
]
);
}
add_action( 'init', 'wholesomecode_wholesome_plugin_register_post_meta' );
Tämä koodi rekisteröi viestityypille kutsutun _wholesomecode_wholesome_plugin_block_textmetakentän post. Se myös varmistaa, että REST API voi käyttää tätä metakenttää, jonka show_in_restarvo on tosi.
Välitämme funktion __return_truemyös auth_callbackargumentille varmistaaksemme, että meillä on tämän parametrin käyttöoikeudet. Jos halusimme parempaa suojausta tälle parametrille, muuttaisimme tämän mukautetuksi funktioksi, joka tarkistaa tietyn käyttäjäroolin.
Post-meta-attribuuttien rekisteröinti JavaScriptissä
Avaa jälleen edellisen oppaan mukaisesti /src/index.jsja korvaa attributesse seuraavalla:
attributes: {
blockText: {
meta: '_wholesomecode_wholesome_plugin_block_text',
source: 'meta',
},
},
Sen sijaan, että määrittelisimme attribuutin tyypin ja määritämme oletusarvon, määritämme sen sijaan meta-avaimen, josta dataattribuutti tulee, ja ilmaisemme, sourceettä attribuutin on meta.
Kuten tämän oppaan yläosassa olevasta varoituksesta käy ilmi, et voi käyttää post-meta-kentän attribuutteja JavaScript- savemenetelmällä, joten käännä laajennus käyttämällä npm startja katsotaan kuinka voimme tulostaa metan.
Post Metan renderöiminen
Koska olemme tallentaneet attribuuttimme post-meta-muodossa, voisimme tulostaa sen missä tahansa WordPressissä käyttämällä get_post_meta(edellyttäen, että meillä on $post_id):
get_post_meta( $post_id, '_wholesomecode_wholesome_plugin_block_text', true );
Jatkamme Dynamic Block -opasta, katsotaanpa, kuinka voimme käyttää tätä attribuuttia palvelinpuolella PHP:ssä.
Meta ei ole käytettävissä $attributesparametrin render_callback, koska post meta -attribuutit eivät välitä arvoaan tälle parametrille, mutta voimme käyttää globaalia $postobjektia saadaksemme viestitunnuksen.
Päivitetään tämä mielessämme register_block_typelähettämään post-meta:
register_block_type(
'wholesomecode/wholesome-plugin',
array(
'editor_script' => 'wholesomecode-wholesome-plugin-block-editor',
'editor_style' => 'wholesomecode-wholesome-plugin-block-editor',
'render_callback' => function( $attributes, $content) {
global $post;
$block_text = get_post_meta( $post->ID, '_wholesomecode_wholesome_plugin_block_text', true );
return "<p class='wp-block-wholesomecode-wholesome-plugin'>$block_text</p>";
},
'style' => 'wholesomecode-wholesome-plugin-block',) );
Huomaa, että meidän ei enää tarvitse rekisteröidä attributestäällä, koska pääsemme vain post meta -kenttään get_post_metatoiminnon kautta.
Blockin käyttäminen
Tämä ei ole tämäntyyppisen metan paras käyttötapaus, mutta kun käytämme lohkoa, voimme nähdä, että koska tallennamme attribuutit post-meta-muodossa, jos päivitämme attribuutin yhdessä lohkossa, se päivittää kaikki lohkot, kuten viestin meta tallennetaan viestiin, ei yksittäiseen lohkoon:
Lähetä metaattribuutit toiminnassa
- Tutustu sisäkkäisten alilohkojen luomiseen
InnerBlockskomponentin avulla - Vie post-metan käyttöä Gutenbergissä lisää luomalla mukautettuja metalaatikoita Gutenbergissä
- Tutustu asetusten käyttämiseen tietojen tallentamiseen Gutenbergin asetustaulukkoon