NExT Custom Field Link Button Block
投稿のカスタムフィールド(投稿メタ)の値をリンク先とするボタンブロックを追加する WordPress プラグイン
by NExT-Season · github.com/atsushia/next-custom-field-link-button-block
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/atsushia/next-custom-field-link-button-block/releases/download/0.4.0/next-custom-field-link-button-block-0.4.0.zip投稿のカスタムフィールド(投稿メタ)の値をリンク先とするボタンブロックを追加する WordPress プラグインです。
| 項目 | 内容 |
|---|---|
| Contributors | NExT-Season |
| Tags | block, button, custom field, link, meta |
| Tested up to | 6.8 |
| Stable tag | 0.4.0 |
| License | GPLv2 or later |
Description
このブロックは、投稿ごとに設定されたカスタムフィールド(投稿メタ)の値をリンク先URLとして使用するボタンを表示します。
主な機能
- リンク先URLを取得するカスタムフィールド名(メタキー)をブロックの設定パネルから指定可能
- カスタムフィールドの値の前後に付加する接頭子・接尾子(プレフィックス・サフィックス)を指定可能
- コアのボタン(Buttonsグループ)と同様に、ブロックツールバーからボタン全体の配置(左寄せ・中央寄せ・右寄せ)を切り替え可能
- 新しいタブで開く(target="_blank")の有効・無効を切り替え可能
- ボタンラベルはブロック上で自由に編集可能
- ボタンのスタイル・装飾は、初期状態では有効化されているテーマのボタンブロックのスタイルに準拠。標準のボタンブロックと同様に、幅・スタイル(塗りつぶし/輪郭)・色・タイポグラフィ・余白・枠線・影も個別にカスタマイズ可能
使い方
- 投稿またはページの編集画面で「カスタムフィールドリンクボタン」ブロックを追加
- ブロックの設定パネルで、リンク先URLが入っているカスタムフィールド名を入力
- 必要に応じて「新しいタブで開く」を有効化
- ブロック上でボタンラベルを入力
注意事項
指定したカスタムフィールド名の値が空、または投稿に存在しない場合、フロントエンドでは何も表示されません。また、_ から始まるなどWordPressが「保護対象」とみなすメタキーを指定した場合も、内部利用のデータが公開されるのを防ぐため何も表示されません。
Installation
/wp-content/plugins/next-custom-field-link-button-blockディレクトリにプラグインファイルをアップロード、またはWordPressのプラグイン画面から直接インストール- WordPressの「プラグイン」画面でプラグインを有効化
- 投稿またはページの編集画面で「カスタムフィールドリンクボタン」ブロックを使用
Frequently Asked Questions
カスタムフィールドはどこで設定しますか?
投稿編集画面の「カスタムフィールド」パネルから、任意のフィールド名とURL形式の値を設定してください。
ボタンのスタイルは変更できますか?
標準のボタンブロックと同様に、設定パネルから幅・スタイル(塗りつぶし/輪郭)・色・タイポグラフィ・余白・枠線・影を変更できます。何もカスタマイズしない場合は、有効化されているテーマのボタンブロックのスタイルがそのまま適用されます。
開発
このブロックは @wordpress/scripts でビルドします。src/ が編集対象、build/ がビルド生成物(プラグインの動作に必要なため git 管理下に含めています)です。
セットアップ・ビルド
npm install
composer install
npm run build
開発時(ファイル変更を監視)
npm start
ローカル環境(wp-env)
npm run env:start # wp-env start
npm run env:stop # wp-env stop
| 環境 | URL |
|---|---|
| 開発 | http://localhost:8888 |
| テスト | http://localhost:8889 |
コーディング規約チェック(phpcs)
composer run phpcs
composer run phpcbf # 自動修正
git commit 時に husky + lint-staged 経由でステージされた PHP ファイルに対して自動実行されます。
PHPUnit テスト
# Unit テスト(WordPress 非依存、ローカルでそのまま実行可能)
vendor/bin/phpunit --testsuite unit
# Integration テスト(wp-env 上で実行)
npx wp-env run tests-cli --env-cwd=wp-content/plugins/NExT-Custom-Field-link-button-Block vendor/bin/phpunit --testsuite integration --bootstrap=tests/phpunit/bootstrap.php
E2E テスト(Playwright)
npx wp-env start
npx playwright install chromium
npm run test:e2e
ファイル構成
NExT-Custom-Field-link-button-Block/
├── next-custom-field-link-button-block.php # メインプラグインファイル
├── src/
│ ├── block.json # ブロック定義(属性・supports)
│ ├── index.js # ブロック登録
│ ├── edit.js # エディター画面
│ └── render.php # フロントエンド/エディタープレビューのサーバーサイドレンダリング
├── build/ # ビルド生成物
├── tests/
│ ├── phpunit/ # PHPUnit(Unit・Integration)
│ └── e2e/ # Playwright E2E テスト
├── bin/install-wp-tests.sh
├── .wp-env.json
├── phpcs.xml.dist
├── phpunit.xml.dist
├── playwright.config.ts
├── .github/workflows/ # CI(phpcs/phpunit/plugin-check/e2e)・Release
├── readme.txt # WordPress.org 形式の説明(日本語)
├── composer.json
└── package.json
実装方針
- 動的ブロック(
render.php)として実装しており、静的な保存内容は持たない。カスタムフィールドの値は投稿ごとに異なるため、表示時に都度get_post_meta()で取得する。 - コアの
core/buttonブロックと同じマークアップ・クラス名(wp-block-button/wp-block-button__link)を使用し、block.jsonのstyle/editorStyleもコア標準のスタイルハンドルをそのまま参照することで、独自CSSなしに有効化されているテーマのボタンスタイルを継承する。 - 色・タイポグラフィ・余白・枠線・影などの装飾設定は、コアの
core/buttonブロックと同等のsupportsを宣言することで、標準のボタンブロックと同じ範囲のカスタマイズに対応している。
詳細な仕様・設計判断は SPEC.md を参照してください。
Changelog
0.4.0
- 新機能: コアのButtonsブロックと同様に、ブロックツールバーからボタン全体の配置(左寄せ・中央寄せ・右寄せ)を設定できるように対応
0.3.0
- 新機能: カスタムフィールドの値の前後に付加する接頭子(プレフィックス)・接尾子(サフィックス)を設定パネルから指定できるように対応
0.2.1
- セキュリティ強化: 保護対象メタキー(
_始まり等)が指定された場合はフロントエンドへ出力しないように変更 - 堅牢性向上: ブロック属性が想定外の型だった場合でもエラーにならないようガードを追加
- ボタンラベルの出力を
esc_html()に変更(装飾書式を許可していないため)
0.2.0
- 標準のボタンブロックと同様の装飾設定(幅・スタイル・色・タイポグラフィ・余白・枠線・影)に対応
0.1.0
- 初回リリース
License
GPLv2 or later - https://www.gnu.org/licenses/gpl-2.0.html
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.