BeAct Co., Ltd.

BLOG
社員ブログ

WordPress の「カスタムコードブロック」: 1

こんにちは! 今日もコーディングを楽しんでいますか?

こんかいは、 WordPress のお話です。WordPress が採用している「Gutenberg エディタ」には、「コードブロック」という仕組みがあります。「特定の機能を伴ったブロック」とも言うべきもので、UI から様々な見た目の変化や機能を持たせられるため、便利に使っている方も多いと思います。

しかし、最初に導入されているコードブロックだけだと、「こんな機能があったらいいのに……」と物足りなくなることがあるかもしれません。そこで、こんかいより複数回のシリーズで、自作のコードブロック、その名も「カスタムコードブロック」を作る方法をご紹介していこうと思います。

なお、このシリーズの技術レベルは「上級」です。少なくとも、以下の事柄に関してひとつでも「?」が頭の上に浮かんだ場合は、先にその事柄に習熟することを、強くオススメします。

  • コマンドプロンプト、Windows PowerShell、または(Mac OS の)ターミナル
  • 「カレントディレクトリ」という言葉の意味
  • 「パスを通す」という意味、そのやり方
  • Node.js / nvm
  • PHP / XAMPP
  • Chocolatey または Homebrew
  • Visual Studio Code (以下「VS Code」)
  • NPM Script
  • JSX (React が採用している、マークアップのような「JavaScript の式」)

環境の準備

最初に、カスタムコードブロックを作るための環境構築から始めましょう。

必要なツール

お使いのマシンに、以下のツールを導入してください。

パス設定と VS Code の構成

次は、導入したツール群と、VS Code とを連携させましょう。

パスを通す

Node.js および PHP 実行環境を導入した際は、必ずパスが通っていることを確認してください。確認するには、コマンドプロンプトやターミナル(以下「コンソール」)で:

npm -v
php -v

を実行してください。エラーが出なければ、ぶじ、パスが通っています。

もしエラーとなったら?

その原因は「パスが通っていないから」です。パスの通し方が分からない場合は、お手数ですが、まずパスの通し方を調べてから、再度挑戦してください。

VS Code の設定

拡張機能: WordPress Playground を機能させるために、以下の手順で PHP へのパスを指定してください。

  • VS Code の「設定」を開き、 php.validate.executablePath で検索してください。
  • setting.json へのリンクが表示されるので、それを開いてください。
  • その項目に、PHP へのパスを指定してください。
"php.validate.executablePath": "PHPへのパス"

プロジェクトの作成

次に、開発のためのフォルダ構成および最低限のファイル配置、すなわちプロジェクトの作成を行ないます。

スキャフォールディングとは

一般的に、特定のツールを使うプロジェクトは、ツール公式がおすすめのテンプレートを配布していることが多く、ターミナルで特定のコマンドを実行することで、自動的にプロジェクトのファイルやフォルダを生成してくれます。

このテンプレートを「スキャフォールド(足場)」と呼び、スキャフォールドを生成することを「スキャフォールディング」と呼びます。

コマンド実行とプロジェクト構成

コンソールのカレントディレクトリを、コードを作成したいディレクトリの「親ディレクトリ」に移動してください。ここで以下のコマンドを実行することで、スキャフォールディングが行われます。

npx @wordpress/create-block@latest プラグインの識別名

プラグインの識別名 のところには、作りたいカスタムコードブロックの名前(例: customblock-information)を入れてください。ただしこの名前は、そのまま WordPress にインストールする際の識別名となります。他のプラグイン名称と重複しないようご注意ください

こんかいは例として、「情報」というカスタムコードブロックを作ろうと思います。プラグイン識別名は customblock-information としましょう。このとき、スキャフォールディングのコマンドは、このようになります。

npx @wordpress/create-block@latest customblock-information

上記を実行すると、以下のような表示が出ることがあります。これは、追加の npm パッケージのインストールが必要であることを示しています。

Need to install the following packages:
@wordpress/create-block@4.65.0
Ok to proceed? (y) 

ここで y または Enter を押すことで、必要なパッケージのインストールが開始されます。

コマンド実行の完了まで少々時間がかかりますが、コンソールは逐次メッセージを出力しつつ、スキャフォールディングの進捗を伝えてくれます。

Creating a new WordPress plugin in the customblock-information directory.

Creating a "block.json" file.

Creating a "package.json" file.

Installing `@wordpress/scripts` package. It might take a couple of minutes...

(...中略...)

To enter the directory type:

  $ cd customblock-information

You can start development with:

  $ npm start

Code is Poetry

無事にスキャフォールディングが終わったら、 customblock-information ディレクトリに、カレントディレクトリを移動しましょう。

cd customblock-information

この customblock-information ディレクトリは、プロジェクトの起点、すなわち「プロジェクトルート」となります。 VS Code で直接、このフォルダを開くと、このように、すでにプロジェクトの形になっていることでしょう。これで準備完了です!

WordPress Playground の使い方

起動

VS Code が立ち上がったら、上の図の赤い矢印で示したアイコンをクリックしてください。すると、このような表示が現れます。

これが、必要なツールで示した「WordPress Playground 拡張機能」です。ここで、「Start WordPress Server」を押してみましょう。

ブラウザが開いて、まるで WordPress のページのようなものが出てきましたね。実はこれ、ローカルマシンで実際に WordPress が動作しているのです! これで動作を確認しながら、カスタムコードブロックを作ってゆく、というわけです。

WordPress プラグインの確認

それでは、ダッシュボードから「プラグイン」を開いてみましょう。

なんと! 先ほどスキャフォールディングした名前のプラグインが、導入されているではありませんか! さっそく、「新規投稿」から使ってみましょう!

「ブロック挿入ツール」を開いた中の、「ウィジェット」の一番下にあるスマイリーマーク。これをクリックすると、文字が書かれただけの「カスタムコードブロック」が挿入できました! これで、目的のカスタムコードブロックを作る準備は完了です。

注意点

この拡張機能は、スキャフォールドされたプロジェクトを、直接、カスタムコードブロックプラグインがインストールされたディレクトリに見立てるものです。そのため、ダッシュボードからプラグインを「削除」すると、このプロジェクトファイルがすべて消滅してしまいます!

こうなることだけは、避けたいものです……。

このような悲劇を起こさないよう、できるだけ Git などのバージョン管理システムで、「作業経過のスナップショット」をこまめに取っておくことをおすすめします。

カスタムコードブロック、はじめの一歩

それでは、記念すべき一歩を踏み出しましょう。

せっかくの自作カスタムコードブロックですから、やっぱり「ブロック挿入ツール」内では、一番上の「テキスト」の部分に置いてみたいですよね。また、スマイリーマーク以外の、意味のわかりやすいアイコンに変えてみたり、プラグインの識別名ではなく、わかりやすい日本語で表示してほしいものです。以下の手順で、挑戦してみましょう!

block.json の編集

/src/customblock-information/block.json を開いて、該当する項目の値を、このように編集してみてください。編集後は、保存を忘れずに!

  "title": "情報ブロック",  
  "category": "text",
  "icon": "info-outline",

変更の確認

内容を変更したら、つど「反映させる」という作業が必要になります。これを行わなければ、 WordPress は変更を認識してくれません。

反映には、コンソールから以下のコマンドを実行します。

npm run start

npm run start は、開発モードで開発コードの保存を監視・ビルドするコマンドです。編集を加えるたびに、 /src/customblock-information/ 以下のファイルがリアルタイムでビルドされ、 /build/ ディレクトリに反映されます。これこそがカスタムコードブロックの本体であり、 WordPress が認識しているファイル群です。

さあ、反映が完了したら、もう一度「ダッシュボード」から、「新規投稿の追加」を選び、「ブロック挿入ツール」を開いてみましょう!

このように表示されれば、成功です! おめでとうございます!

各プロパティの意味

先ほどの block.json 中で編集を加えたプロパティには、それぞれ以下の意味があります。

  • title
    • アイコンの下に表示される、表示名を指定します。プラグイン識別名には影響を与えません
  • category
    • ブロック挿入ツール内での区分です。表示をまとめるだけであり、特に機能に影響を及ぼすわけではありません。デフォルトで指定できる値は以下のとおりで、それぞれの区分の位置にアイコンを表示します。
      • text…テキスト
      • media…メディア
      • design…デザイン
      • widgets…ウィジェット
      • theme…テーマ
      • embed…埋め込み
  • icon
    • WordPress の DashIcons で提供されているアイコンを、アイコンIDdash-aaaaa-bbbbb であれば先頭の dash- を除いた aaaaa-bbbbb の部分)で指定します。

演習

試しに、この block.json"description" プロパティの値を、"情報、警告、エラーメッセージを表示するブロック" に置き換えてみてください。さあ、何が起きるでしょうか?

ヒント:「ブロック挿入ツール」内での表示に注目してみてください!

ここまでのまとめ

こんかいは、WordPress の Gutenberg エディタに「カスタムコードブロック」を追加するための準備として、

  • 開発に必要なツールの導入
  • スキャフォールディングによるプロジェクト構築
  • VS Code における WordPress Playground 拡張の使い方
  • カスタムコードブロックの編集の初歩

についてご紹介しました。

次回は、いよいよカスタムブロックの「中身」—— editsave について、詳しく解説していきます。お楽しみに!