Kui registreerite ja salvestate atribuute WordPressi plokiredaktoris (Gutenberg), on teil võimalus salvestada need tavapäraste plokiatribuutide asemel postitusmetana.
Seda meetodit kasutades võib teie plokis olla säte, mis saab juhtida midagi postituse ulatuses või mallil.
Oluline märkus postituse metaatribuutide renderdamise kohta
Postituse metaatribuute ei saa renderdada JavaScripti salvestusmeetodi abil. Gutenbergi meeskond otsustas seda ära hoida, kuna postituse metavälju renderdavad plokid võivad mujal postituses muutuva post-meta tõttu kergesti puruneda.
Selles juhendis käsitleme seda, mida oleme oma WordPressi Gutenbergi pistikprogrammi juhendis ja ka dünaamilise blokeerimise juhendis juba loonud .
Eeldused
- Olge tuttav WordPressi Gutenbergi pistikprogrammide loomisega
- Olge tuttav dünaamiliste plokkide ja serveripoolse renderdamisega
Postituse meta registreerimine PHP-s
Enne kui saame JavaScriptis posti metavälja kasutada, peame veenduma, et oleme selle PHP-s registreerinud register_metaja show_in_restargumendiks on seatud tõene.
Järgides dünaamilise blokeerimise juhendit, avage pistikprogrammi PHP juurfail (antud juhul wholesome-plugin.php) ja lisage pärast kõiki muid funktsioone selle faili allossa järgmine kood:
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' );
See kood registreerib metavälja, mida kutsutakse postituse tüübi _wholesomecode_wholesome_plugin_block_textjaoks. postSamuti tagab see, et REST API pääseb sellele metaväljale juurde, kui show_in_restväärtuseks on seatud tõene.
Samuti anname funktsiooni __return_trueedasi auth_callbackargumendile, et tagada, et meil on õigused sellele parameetrile juurde pääseda. Kui sooviksime selle parameetri jaoks paremat turvalisust, muudaksime selle kohandatud funktsiooniks, mis kontrollib teatud kasutajarolli.
Postituse metaatribuutide registreerimine JavaScriptis
Jällegi, järgides eelmist juhendit, avage /src/index.jsja asendage attributessee järgmisega:
attributes: {
blockText: {
meta: '_wholesomecode_wholesome_plugin_block_text',
source: 'meta',
},
},
Atribuudi tüübi määramise ja vaikeväärtuse määramise asemel määratleme metavõtme, millest andmeatribuut pärineb, ja näitame source, et atribuudiks on meta.
Nagu on märgitud selle juhendi ülaosas olevas hoiatuses, ei pääse te JavaScripti savemeetodi kaudu juurde postituse metavälja atribuutidele, seega kompileerige pistikprogramm npm startja vaadake, kuidas saame meta väljastada.
Postituse meta renderdamine
Kuna oleme salvestanud oma atribuudi postmeta-na, saame selle väljastada kõikjal WordPressis, kasutades get_post_meta(eeldusel, et meil on olemas $post_id):
get_post_meta( $post_id, '_wholesomecode_wholesome_plugin_block_text', true );
Jätkates dünaamilise blokeerimise juhendit, vaatame, kuidas pääseme sellele atribuudile juurde PHP-s serveri poolel.
Meta ei ole $attributesparameetri parameetri kaudu saadaval render_callback, kuna postituse metaatribuudid ei edasta oma väärtust sellele parameetrile, kuid meil on juurdepääs globaalsele $postobjektile, et saada postituse ID.
Seda silmas pidades värskendame oma register_block_typepostituse meta väljastamiseks:
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',) );
Pange tähele, et me ei pea enam attributessiin registreerima, kuna pääseme funktsiooni kaudu ainult posti metaväljale get_post_meta.
Bloki kasutamine
See ei ole seda tüüpi meta parim kasutusjuht, kuid plokki kasutades näeme, et kuna me salvestame atribuudid post metana, siis kui värskendame atribuuti ühes plokis, värskendab see kõiki plokke, nagu postituse meta salvestatakse postituse, mitte üksiku ploki juurde:
Postitage metaatribuudid tegevuses
- Vaadake komponendiga pesastatud alamplokkide loomist
InnerBlocks - Täiendage postmeta kasutamist Gutenbergis, luues Gutenbergis kohandatud metakastid
- Vaadake Gutenbergi suvandite tabelis olevate andmete salvestamise seadete kasutamist