✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Post Meta -kenttien käyttäminen attribuuttien tallentamiseen WordPressin lohkoeditorissa (Gutenberg)

17

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

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

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja