Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ブロックエディターを用いたWEBサイト開発とカスタムフィールドのあり方を考える。/ WordC...

ブロックエディターを用いたWEBサイト開発とカスタムフィールドのあり方を考える。/ WordCamp Japan 2021

#wcjpn2021

WordCamp Japan 2021 の登壇資料です。

More Decks by Toro_Unit (Hiroshi Urabe)

Other Decks in Technology

Transcript

  1. Toro_Unit /઎෦ ߛ (͏Β΂ ͻΖ͠) • Frontend Engineer • WordPress

    Plugin and Theme Developer • ௕໺ݝদຊࢢࡏॅɻձࣾ͸ࡳຈɻ Github: @torounit Twi/er: @Toro_Unit 3
  2. 6

  3. 17

  4. Create Meta Block | Block Editor Handbook | WordPress Developer

    Resources handbook ʹ͋ΔɺΧελϜϑΟʔϧυΛѻ͏ϒϩοΫͷνϡʔτ ϦΞϧɻ 20
  5. import { registerBlockType } from '@wordpress/blocks'; import { TextControl }

    from '@wordpress/components'; import { useSelect } from '@wordpress/data'; import { useEntityProp } from '@wordpress/core-data'; import { useBlockProps } from '@wordpress/block-editor'; registerBlockType( 'myguten/meta-block', { title: 'Meta Block', icon: 'smiley', category: 'text', edit( { setAttributes, attributes } ) { const blockProps = useBlockProps(); const postType = useSelect( ( select ) => select( 'core/editor' ).getCurrentPostType(), [] ); const [ meta, setMeta ] = useEntityProp( 'postType', postType, 'meta' ); const metaFieldValue = meta[ 'myguten_meta_block_field' ]; function updateMetaValue( newValue ) { setMeta( { ...meta, myguten_meta_block_field: newValue } ); } return ( <div { ...blockProps }> <TextControl label="Meta Block Field" value={ metaFieldValue } onChange={ updateMetaValue } /> </div> ); }, } ); 21
  6. 22

  7. ϒϩοΫΛ࡞Δ࣌ʹߟྀ͢Δ͜ͱ • ctrl+c (cmd+c) ౳ͷγϣʔτΧοτΩʔ͕ҙਤ௨Γʹಈ͔͘ʁ <RichText>Ͱೖ ྗཝΛ࡞Δͷ͕ϕλʔͬΆ͍ɻ • ϒϩοΫ͕ফ͑ͨͱ͖ʹΧελϜϑΟʔϧυ͸ͦͷ··Ͱ͍͍ͷ͔ʁ •

    ϒϩοΫ͕ෳ਺࡞ΒΕͳ͍Α͏ʹɺ "supports": { "multiple": false } • save Ͱ௚઀ΧελϜϑΟʔϧυͷ஋ΛऔΓग़͢͜ͱ͕ग़དྷͳ͍ͷͰɺ΍Γ͍ͨ ৔߹͸ɺa0ributes ͱͯ͠ผʹఆٛ͢Δඞཁ͋Γɻ(αΠτ಺ݕࡧ౳ͰͷϢʔε έʔεʣ 23
  8. 25

  9. 26

  10. ՝୊ײ • ࠓͷͱ͜ΖɺϑΟʔϧυ͝ͱʹϒϩοΫΛ࡞੒ͨ͠ํ͕Αͦ͞ ͏ɻWordPress ͷ API ଆͰͷܕͷ੍໿͕ڧ͍ͷͰɺͳΜʹͰ΋ ࢖͑ΔϒϩοΫΈ͍ͨͳͷ͸ݫͦ͠͏ɻ • [type="email"],

    [type="number"] ౳ͷϑΟʔϧυΛ࢖͏ͱ஋ͷί ϐʔ͕ग़དྷͳ͍ɻ(ϒϩοΫͷίʔυ͕ίϐʔ͞ΕΔ) • όϦσʔγϣϯʹ΋৭ʑ޻෉͕ඞཁɻ 28