Editorial-style close-up of a modern WordPress admin interface and block editor on a clean desktop screen, showing a native HTML/CSS-rendered WordPress.org profile card inside a Gutenberg block: avatar, username, registration date, and colorful badge icons arranged neatly in a responsive card layout. Include subtle UI elements suggesting block style controls like typography, spacing, border radius, shadow, and alignment panels, with one card variation in the main canvas and small preview thumbnails of alternate layouts nearby. Visualize the contrast between image-based cards and native HTML rendering through crisp, scalable typography and sharp edges, with light mode and dark mode design cues reflected in the interface. Sleek, product-focused, minimal workspace, soft natural lighting, high detail, professional software showcase aesthetic, no readable text, no logos, no watermarks.

WordPress.orgのプロフィールカードをブロックで表示する「WS WP Profile Display Block」を作りました


– CardPressが止まってしまっていたので、WordPress.orgのプロフィールカードをブロックプラグインにしました – 画像ではなくHTMLでWordPress.orgプロフィールカードのブロックプラグインを公開しました

WordPress.org のプロフィールページには、アバターや登録日、それに Contributor や Translation Contributor といったバッジが並んでいます。せっかくコミュニティで活動しているなら、自分のサイトやプロフィールページにも載せておきたいところです。

これを画像として生成してくれるサービスに CardPressdonini/wp-profiles-card)がありました。GitHub の README に貼っている方も多かったと思いますが、このサービスのサイトが止まってしまいました。

そこで、同じようにカードを WordPress のブロックとして表示するプラグインを作りました。

GitHub: web-soudan/ws-wp-profile-display-block

表示サンプル

Matt Mullenweg

@matt

登録日:

  • Core Contributor
  • Core Team
  • Meta Contributor
  • Plugin Developer
  • Theme Developer
  • Marketing Contributor
  • Photo Contributor
  • Photos Team
  • bbPress Contributor
  • WordCamp Organizer
  • WordCamp Speaker

画像ではなく、HTML と CSS で描く

CardPress は、プロフィール情報を SVG 画像として出力する仕組みでした。GitHub の README のように「画像しか貼れない場所」に埋め込むには、これが正解です。ただ、WordPress サイトの中に置くのであれば、画像である必要はありません。というより、画像だと少し困ることがあります。

  • テーマの配色やフォントに馴染まない
  • ライトモード/ダークモードの切り替えに追従しない
  • 拡大するとぼやける、あるいはレスポンシブで扱いにくい
  • 中の文字がテキストとして読めない(コピーも検索もできない)

WS WP Profile Display Block は、同じ種類のカードを WordPress の中で ネイティブな HTML と CSS としてレンダリングします。テーマのスタイルに従い、ダークモードにも追従し、文字はちゃんとテキストです。

主な特徴

サーバーサイドレンダリングの動的ブロック

投稿内容に HTML を焼き込まず、表示のたびに WordPress.org のデータから組み立てる動的ブロックです。
バッジが増えても、投稿を編集し直す必要はありません。

キャッシュとフォールバック

プロフィールデータは既定で 6 時間キャッシュします。加えて、WordPress.org が一時的に応答しないときは最後に取得できた内容を表示します。外部データに依存するブロックで一番怖いのは「ある日突然カードが消える」ことなので、そこは落ちないように設計しています。

バッジ 63 色+カスタムアイコン 10 種

バッジの配色とアイコンは CardPress 側の実装から移植しました。profiles.wordpress.org で見えているものと同じ見た目になります。

標準のブロックサポートに乗せる

色・タイポグラフィ・余白・枠線&シャドウ・配置は、すべてブロックの標準「スタイル」パネルから編集できます。独自のカラーピッカーは付けていません。プラグイン独自の UI を増やすより、Gutenberg の作法に合わせたほうが、使う側も迷わないと考えました。もちろん既定値へのリセットも効きます。

3 つのスタイルバリエーション

バリエーション見た目
Defaultアバター左・情報右、カード背景とシャドウあり
Stackedアバターを上に置いた中央揃え
Minimalカード背景・シャドウなし

サイドバーに置くのか、記事末尾の著者欄に置くのか、固定ページで大きく見せるのか。用途に合わせて選べます。

アクセシビリティと安全性

alt 属性の付与、装飾アイコンへの aria-hidden、出力のエスケープ、アバター URL の Gravatar 限定許可リストなどを既定で入れています。外部から取得したデータをそのまま出す作りにはしていません。

使い方

動作要件は WordPress 6.5 以上/PHP 7.4 以上です。

  1. プラグインを wp-content/plugins/ に配置する
  2. プラグイン管理画面で「WS WP Profile Display Block」を有効化する
  3. ブロックエディターで「WordPress.org プロフィールカード」ブロックを挿入する(「WordPress.org」で検索できます)
  4. WordPress.org のユーザー名を入力する(https://profiles.wordpress.org/<ユーザー名>/ の部分)

ブロック側の設定項目はこちらです。

設定内容既定
WordPress.org ユーザー名表示するプロフィール(空)
ヘッダーを表示アバター・名前・ユーザー名・登録日ON
アバターを表示ON
登録日を表示ON
バッジを表示ON
バッジの表示形式アイコン+ラベル/アイコンのみアイコン+ラベル
プロフィールへリンクカード全体を WordPress.org のプロフィールへのリンクにするON
新しいタブで開くOFF

角丸・シャドウ・色・タイポグラフィ・余白・配置は、前述のとおり標準のスタイルパネル側です。

開発について

ライセンスは GPL-2.0-or-later、現在のバージョンは 0.1.1 です。

リポジトリには wp-env による開発環境、PHPUnit(ユニット/インテグレーション)、Playwright による E2E テスト、WordPress Coding Standards の設定を入れてあります。スクレイピングのセレクタやキャッシュ戦略、バッジ配色の全一覧は docs/spec.md にまとめています。

なお、このプラグインは WordPress.org や Automattic の公式なものではありません。

おわりに

「使っていたサービスが止まった」というのは、Web の仕事をしていると避けられない出来事です。外部サービスに依存している部分は、いつか必ず面倒を見る日が来ます。

今回はデータの出どころ(WordPress.org)自体は生きていたので、表示する側を自分たちで作り直せば済みました。むしろ、画像で受け取っていたものを自前でレンダリングするようにしたことで、テーマ追従やアクセシビリティといった、元のサービスでは手の届かなかった部分まで踏み込めています。

コードは GitHub で公開しています。ご意見・不具合の報告など、Issue や Pull Request でお寄せいただけると嬉しいです。

https://github.com/web-soudan/ws-wp-profile-display-block


トップへ戻る