0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iFrame版エディタでuseBlockPropsを使わないでもブロックを選択可能にする

0
Posted at

IFrame版エディタではuseBlockPropsを使っていないブロックが選択できない

WordPress 7.0から標準実装になるIFrame版エディタでは、useBlockPropsを使っていないカスタムブロックは編集画面で選択ができなくなってしまいます。

サイドバーのリストビューからは選択可能ではあるもののユーザーには優しくありません。
お作法に則らず、useBlockPropを使っていなかったカスタムブロックは使うように書き直していきましょう。

でもuseBlockProps使いたくないケースもある

しかしuseBlockPropsはブロックのwp-block-[blockname]のクラスも補完するため、これによってエディタでは不要なCSSが適用されたりして邪魔になるということがあります。
例えば、簡易なアプリのブロックのように編集画面はデータの編集に徹して、プレビューは要求された時にしか出さないようなブロックや、ブロック全体がSSRで編集画面でのブロック本体は<ServerSideRender/>で出力されるブロックなどです。

ブロックのIDを指定してブロックの選択する

useBlockPropsを使わなくても、クリック時にブロックIDを指定してブロックを選択するようにすれば、ブロックは選択可能です。
core/block-editorのストアのアクションで、ブロックのIDを指定してブロックを選択できます。

wp.data.dispatch("core/block-editor").selectBlock(clientId);

こんな感じでuseBlockPropsを使わずにクリックでブロックを選択可能にできます。

wp.blocks.registerBlockType("my/customblock", {
  /* 略 */
  edit({ clientId }) {
    /* 略 */
    const selectThisBlock = useCallback(() => {
        wp.data.dispatch("core/block-editor").selectBlock(clientId);
    }, [clientId]);
    
    return (
      <div onClick={selectThisBlock}>
        ...
      </div>
    );
  },
  /* 略 */
});
  
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?