TrustBrain

生成AIを使った、WordPressプラグインの開発方法

生成AIを使って、PDFファイルをプレビュープラグインを実際に作りながら、プラグインの開発方法を解説します。

WordPressプラグインを作ってみたいけれど、何から始めればいいのか分からない──
そんな方に向けて、生成AIを活用したプラグイン開発を体験できるブログです。
ここでは、PDFファイルをプレビュー表示するシンプルなプラグインを実際に作りながら、プラグインの開発方法を解説します。

PDFプレビュープラグイン

この記事では、アップロードされたPDFファイルをプレビュー表示できる、実用的なWordPressプラグインを実際に作成していきます。

完成したプラグインには、以下の機能が含まれます。

  • 固定ページや投稿ページの任意の場所に、ショートコードでPDFを表示
  • PDFの1ページ目を、プレビュー画像として表示
  • タイトルと説明文のカスタマイズが可能
  • 「PDFを表示」ボタンと「ダウンロード」ボタンを表示

PDF プレビュー

アジェンダ

develop-plugin-using-AI.pdf
2025年07月23日280 KB

生成AIを使って、PDFファイルをプレビュープラグインを実際に作りながら、プラグインの開発方法を解説します。

完成イメージ:PDFプレビュープラグインの表示例

プログラミングの経験があまりなくても、生成AIの力を借りれば、コピー&ペーストで完成させることができます。

VS Code(無料のコードエディタ)

VS Code は、無料で利用できる軽量なコードエディタです。
公式サイト のボタンをクリックすると、インストールファイルをダウンロードできます。
ダウンロードが完了したら、そのファイルを起動し、画面の案内に従ってインストールを進めてください。

インストール後、以下の設定や拡張機能を追加すると、より快適に使用できます。

  • Japanese Language Pack
    メニューが日本語になり、操作がしやすくなります
  • PHP Intelephense
    WordPressのAPI補完やエラーチェックが利用できるようになります
  • プログラミング向け フォント
     白源(はくげん/HackGen)などのフォントを使うことで、全角空白などコードの視認性が向上します。

圧縮ソフト

プラグインをパッケージ化する際に、ファイルをZIP形式で圧縮する必要があります。
OSによって操作方法が異なりますので、以下を参考にしてください。

  • Windows 11
    右クリックメニューから「ZIP形式で圧縮」を選びます。
    メニューに表示されない場合は、  Shift + 右クリック または「その他のオプションを表示」を使ってください。
    より確実に操作したい場合は、無料の圧縮ソフト 7-Zip の利用をおすすめします。
  • Windows 10以前
    圧縮したいファイルを右クリックし、
    「送る」→「圧縮(ZIP形式)フォルダー」を選択します。
  • Mac
    圧縮したいファイルを選択し、右クリックして「○○を圧縮」を選びます。
    ※「○○」はファイル名に置き換わります

この章では、PDFプレビュー機能を持つシンプルなWordPressプラグインを、生成AIを活用して実際に作成していきます。

今回作るプラグインは、ショートコードを使ってPDFファイルを表示する仕組みです。

使用例(ショートコード)

[pdf_preview filename=”sample.pdf” title=”資料タイトル”]

このショートコードをページ内に設置すると、次のような要素が表示されます

  • PDFの1ページ目のプレビュー画像
  • 指定したタイトルと説明文(任意)
  • 「PDFを表示」ボタン
  • 「ダウンロード」ボタン

プロンプトをClaude(または他の生成AI)に入力すると、必要なコードが自動生成されます。
自動生成されたコードと解説を確認しながら、何度かプロンプトを調整して、プラグイン仕様を洗練させていきます。

プロンプト入力1回目

下記の要件を満たすWordPress用のプラグインを作成してください。
機能概要:
 各ページにおいて、PDFの内容をプレビュー画像で表示し、
 「内容表示」ボタンと「ダウンロード」ボタンを配置する。

Claude 回答

WordPress用のPDFプレビュープラグインを作成しました。このプラグインの主な機能と使用方法をご説明します。

主な機能
  1. PDFプレビュー表示: PDFの最初のページを画像として表示
  2. 内容表示ボタン: クリックでモーダルウィンドウでPDF全体を表示
  3. ダウンロードボタン: PDFファイルを直接ダウンロード
  4. レスポンシブデザイン: 様々な画面サイズに対応
使用方法
ショートコードで表示
[url="https://example.com/sample.pdf" title="サンプルPDF" width="300" height="400"]
パラメータ
  1. url (必須): PDFファイルのURL
  2. title (オプション): 表示するタイトル(デフォルト: “PDF文書”)
  3. width (オプション): プレビュー画像の幅(デフォルト: 300px)
  4. height (オプション): プレビュー画像の高さ(デフォルト: 400px)
使用例
[pdf_preview url="/wp-content/uploads/2024/company-profile.pdf" title="会社案内" width="250" height="350"]
技術的特徴
  1. PDF.js: Mozilla開発のPDFレンダリングライブラリを使用
  2. Ajax対応: 非同期でPDF情報を取得
  3. セキュリティ: WordPressのnonce機能でセキュリティを確保
  4. モーダル表示: ユーザーフレンドリーなPDF閲覧体験
必要な環境
  • WordPress 4.0以上
  • モダンブラウザ(PDF.js対応)
  • インターネット接続(PDF.js CDN使用)

このプラグインをそのまま使用するか、必要に応じてカスタマイズしてください。追加機能や修正が必要でしたらお知らせください。

AI成果物 考察
  • 1ファイルにPHP,JS、CSSが含まれるソースコードに違和感(保守性懸念)
    • プラグインファイル構成案をプロンプトに追加
  • PDF.jsはクライアント(ブラウザ側)にPDFファイルを全て読み込むため、ファイルサイズの大きいPDFを並べて表示する場合など性能懸念あり
    • JavaScriptを使用せず、PHPとCSSのみで構成するようプロンプトを修正
  • URL指定が面倒
    • メディアライブラリ中のファイル名で指定等、ショートコード仕様をプロンプトに追加
プロンプト入力 2回目

下記の要件を満たすWordPress用のプラグインをPHPとCSSで作成してください(JSは利用しない)
機能概要:
 各ページにおいて、PDFの内容をプレビュー画像で表示し、
  「内容表示」ボタンと「ダウンロード」ボタンを配置する。
対象PDF:
 メディアライブラリフォルダに保存されているPDF
ページでの指定方法:
 ショートコードにおいて、ファイル名(filename)で指定する
 なお、任意でタイトル(title)と説明文(description)も指定可能とする
ファイル構成:
pdf-preview-plugin/
├── pdf-preview-plugin.php  # メインファイル
├── pdf-preview-style.css   # スタイル
├── images/              # 画像フォルダ
│    └── pdf-icon.png    # アイコン (自動生成)
└── README.md          # 説明書

Claude 回答

WordPress用のPDFプレビュープラグインを作成いたしました。以下の4つのファイルで構成されています:

ファイル構成
  1. pdf-preview-plugin.php – メインファイル
  2. pdf-preview-style.css – スタイルファイル
  3. README.md – プラグインの説明書
主な機能
  • PDFプレビュー表示: WordPressの標準機能でPDFのサムネイル生成
  • ショートコード対応[pdf_preview filename="example.pdf"]
  • モーダル表示: 内容表示ボタンでPDFをモーダル表示
  • ダウンロード機能: 直接ダウンロードボタン
  •  レスポンシブデザイン: モバイル対応
  •  アクセシビリティ: キーボードナビゲーション対応
  •  ダークモード対応: 自動的にダークモードに対応
使用方法
基本的な使用法
[pdf_preview filename="document.pdf"]
完全な設定例
[pdf_preview filename="manual.pdf" title="ユーザーマニュアル" description="製品の使い方を説明したガイドです。"]
特徴
  • JavaScript最小限: モーダル機能のみに限定
  • 自動アイコン生成: PDFアイコンを自動生成
  • セキュリティ対応: 直接アクセス防止、入力値検証
  • WordPressネイティブ: 標準のメディアライブラリ機能を活用
インストール手順
  1. pdf-preview-pluginフォルダをwp-content/plugins/にアップロード
  2. WordPress管理画面でプラグインを有効化
  3. メディアライブラリにPDFファイルをアップロード
  4. 投稿・固定ページでショートコードを使用

このプラグインは要件を満たしつつ、WordPressの標準に準拠した実装となっています。

AI成果物 考察
  • 最小限のJavaScriptは残るのは致し方ないとしてもPDFをモーダル表示に<iframe>を利用しておりモバイルでは使いづらい。
    • 「内容表示」ボタン押下時は、別タブで表示させる様にプロンプトに追加
  • 下記の特徴は継続させるためにプロプトに追加
    • 自動アイコン生成: PDFアイコンを自動生成
    • WordPressネイティブ: 標準のメディアライブラリ機能を活用
  • 生成されたコードがクラスベース
    • 、関数ベースでの実装とするようプロンプトを調整
プロンプト入力 3回目

下記の要件を満たすWordPress用のプラグインをPHPとCSSで作成してください(JSは利用しない)。
機能概要:
 各ページにおいて、対象PDFの1ページ目をプレビュー画像として表示し、
 「内容表示」ボタンと「ダウンロード」ボタンを配置する。
 ※「内容表示」ボタンは、PDFを別タブで開く動作とする
対象PDF:
 メディアライブラリフォルダに保存されているPDF
ページでの指定方法:
 ショートコードにおいて、ファイル名(filename)で指定する
 なお、任意でタイトル(title)と説明文(description)も指定可能とする
ファイル構成:
pdf-preview-plugin/
├── pdf-preview-plugin.php  # メインファイル
├── pdf-preview-style.css   # スタイル
├── images/              # 画像フォルダ
│    └── pdf-icon.png    # アイコン (自動生成)
└── README.md          # 説明書
留意事項:
・PDFアイコンはプラグインアクティブ時に自動作成
・PHPはクラス化コーデイングしないこと
・可能な限りWordPressの標準関数・APIを活用すること
・HTMLコード出力時で複数行で長くなる場合は、ヒアドキュメントを利用する

Claude 回答

WordPress用のPDFプレビュープラグインを作成いたしました。以下が各ファイルの内容です:

作成したファイル
  1. pdf-preview-plugin.php – メインプラグインファイル
  2. pdf-preview-style.css – スタイルシート
  3. README.md – 使用方法・技術仕様
主な機能
  • PDFプレビュー表示: Imagickを使用してPDFの1ページ目をJPEG画像に変換
  • フォールバック機能: Imagickが利用できない場合は自動生成されたPDFアイコンを表示
  • ショートコード対応: [pdf_preview filename="sample.pdf"]で簡単に実装
  • レスポンシブデザイン: モバイル端末でも適切に表示
  • セキュリティ対策: 直接アクセス防止、入力値のサニタイズ
使用方法
基本的な使用法
[pdf_preview filename="sample.pdf"]
完全な設定例
[pdf_preview filename="sample.pdf" title="重要な文書" description="この文書には重要な情報が含まれています。"]
インストール手順
  1. pdf-preview-pluginフォルダを作成
  2. 上記3つのファイルを配置
  3. /wp-content/plugins/pdf-preview-plugin/にアップロード
  4. WordPress管理画面でプラグインを有効化
技術的な特徴
  • WordPress標準関数を活用: get_posts(), wp_get_attachment_url(), wp_enqueue_style()等を使用
  • クラス化なし: 要件に従い関数ベースで実装
  • 自動画像生成: プラグインアクティベーション時にPDFアイコンを自動生成
  • ヒアドキュメント使用: 複数行HTMLの出力に使用

プラグインをアクティベート後、メディアライブラリにPDFファイルをアップロードしてショートコードを使用できます。

AI成果物 考察

ほぼ思い通りに機能が実装されたので、スリム化(余剰機能の削減)を検討

  • Imagick は直接利用しない
  • 画面を構成する一部品
    • レスポンシブ対応は不要
プロンプト入力 4回目

下記の要件を満たすWordPress用のプラグインをPHPとCSSで作成してください(JSは利用しない)。
機能概要:
 各ページにおいて、対象PDFの1ページ目をプレビュー画像として表示し、
 「内容表示」ボタンと「ダウンロード」ボタンを配置する。
 ※「内容表示」ボタンは、PDFを別タブで開く動作とする
対象PDF:
 メディアライブラリフォルダに保存されているPDF
ページでの指定方法:
 ショートコードにおいて、ファイル名(filename)で指定する
 なお、任意でタイトル(title)と説明文(description)も指定可能とする
ファイル構成:
pdf-preview-plugin/
├── pdf-preview-plugin.php  # メインファイル
├── pdf-preview-style.css   # スタイル
├── images/              # 画像フォルダ
│    └── pdf-icon.png    # アイコン (自動生成)
└── README.md          # 説明書
留意事項:
・PDFアイコンはプラグインアクティブ時に自動作成
・PHPはクラス化コーデイングしないこと
・可能な限りWordPressの標準機能および関数・APIを活用すること
 Imagick を直接利用しない
・HTMLコード出力時で複数行で長くなる場合は、ヒアドキュメントを利用する
レスポンシブ対応は不要

Claude 回答

WordPressプラグインを作成します。要件に従って、クラス化せずに関数ベースで実装し、WordPressの標準機能を最大限活用します。

:

WordPressプラグインが完成しました。要件に従って以下の機能を実装しています:

実装内容
主要機能
  • PDFプレビュー表示: WordPressの標準機能でPDFの1ページ目サムネイルを表示
  • ショートコード対応: [pdf_preview filename="example.pdf"] で簡単設置
  • ボタン機能: 「内容表示」(別タブでPDF表示)と「ダウンロード」ボタン
  • 自動アイコン生成: プラグイン有効化時にGDライブラリでPDFアイコンを作成
技術的特徴
  • クラス化なし: 要件通り関数ベースで実装
  • WordPress標準機能活用: wp_get_attachment_image(), wp_get_attachment_url()等を使用
  • セキュリティ対策: XSS防止、直接アクセス防止、入力値検証を実装
  • ヒアドキュメント: 長いHTML出力で使用
ファイル構成
pdf-preview-plugin/
├── pdf-preview-plugin.php # メイン機能(374行)
├── pdf-preview-style.css # スタイリング
├── images/ # プラグイン有効化時に自動作成
│ └── pdf-icon.png # GDライブラリで自動生成
└── README.md # 詳細な使用方法とトラブルシューティング
使用方法
  1. インストール: pdf-preview-pluginフォルダを/wp-content/plugins/にアップロード
  2. 有効化: WordPress管理画面でプラグインを有効化
  3. PDFアップロード: メディアライブラリにPDFファイルをアップロード
  4. ショートコード使用: 投稿・固定ページで以下を記述
[pdf_preview filename="manual.pdf"]
[pdf_preview filename="catalog.pdf" title="製品カタログ" description="最新の製品情報をご覧ください"]
注意事項
  • PDFサムネイル: サーバーにImageMagickまたはGhostscriptが必要
  • ファイル検索: ファイル名でメディアライブラリから検索(大文字小文字区別なし)
  • エラーハンドリング: ファイルが見つからない場合は適切なエラーメッセージを表示

プラグインは即座に使用可能で、WordPressの標準機能を最大限活用した堅実な実装となっています。

プロンプトの内容次第で、生成結果の品質や構造が大きく変わるため、AIとの対話を通じた仕様の具体化・実装最適化が非常に有効です。

生成されたコードを、以下の構成でフォルダにまとめます。

pdf-preview-plugin/
├── pdf-preview-plugin.php # メインファイル
├── pdf-preview-style.css # スタイル
├── images/          # 画像フォルダ
│   └── pdf-icon.png    # アイコン
└── README.md         # 説明書

手順:

  1. VS Codeなどのエディタで新しいフォルダを作成
  2. 生成AIが出力したコードを、それぞれのファイルにコピー&ペースト
  3. WordPressにプラグインとしてアップロード

生成AIがコードを自動生成してくれるので、構成の基本さえ理解していれば、貼り付けるだけでPDFプレビュー機能付きのプラグインを作ることができます。

作成したプラグインは、公開前に必ずセキュリティチェックを行ってください。
以下のプロンプトを生成AI(例:Claude など)に入力することで、主な脆弱性の有無を確認できます。

AIへのチェック用プロンプト(例)

生成したWordPressプラグインコードをセキュリティの観点でチェックしてください。特に以下の点も含め、該当しない場合はその理由を示してください。

– データの無害化
– 出力時のエスケープ
– ワンタイムトークン(Nonces)の使用
– 権限チェック
– ファイルアクセス制限
– 直接アクセスを防止
– データベース操作
– ファイル操作
– オプションや設定
– エラーハンドリング

問題がある場合は、修正コードも提示してください。但し、現在は該当しない項目でありながら、将来に備えた過剰となりかねない実装は不要です。

  • データの検証(Validation)
    入力値等のデータが、事前に設定したルールや形式(例:メールアドレスの書式、数字の範囲など)に合致しているか
  • データの無害化(Sanitization)
    取得したデータを安全な形に修正・変換しているか
  • 出力時のエスケープ(Escaping)
    不正なHTMLタグやスクリプトコードが含まれていないかを確認し、それらを無害な形に変換しているか
  • ワンタイムトークン(Nonces)の使用
    フォーム送信など、ユーザーが実行する重要な処理に対して、一度限りの有効なセキュリティトークン(ノンス)を使用しているか
  • 権限チェック(Capability Checks)
    現在のユーザーがその操作を実行するための適切な権限(例:管理者、編集者など)を持っているかを確認しているか
  • ファイルアクセス制限
    プラグインファイルへの直接アクセスを防ぐコードがあるか
  • ファイルアップロード制限
    許可されたファイル形式・サイズ・保存場所の制限があるか
  • 一般的な脆弱性
    • SQLインジェクション
    • クロスサイトスクリプティング(XSS)
    • クロスサイトリクエストフォージェリ(CSRF)
Claude 回答

生成したWordPressプラグインのセキュリティをチェックします。各項目について詳細に確認し、問題がある箇所は修正コードを提示します。

セキュリティチェック詳細結果と修正内容

📋 各項目の評価結果

項目評価修正の必要性詳細
データの無害化🔴 → 🟢修正済みsanitize_file_name(), sanitize_text_field(), sanitize_textarea_field() を追加
出力時のエスケープ🔴 → 🟢修正済みすべてのHTML出力で esc_html(), esc_url(), esc_attr() を実装
ワンタイムトークン🟢該当なしフォーム送信やデータ変更処理がないため不要
権限チェック🟡 → 🟢強化済み管理画面で current_user_can() による二重チェックを追加
ファイルアクセス制限🟢適切WordPressメディアライブラリ経由でのアクセスのみ
直接アクセス防止🟢適切ABSPATH チェックで実装済み
データベース操作🟡 → 🟢修正済み$wpdb->esc_like() でワイルドカード文字をエスケープ
ファイル操作🟡 → 🟢強化済みエラーハンドリングとログ出力を追加
オプションや設定🟢該当なし設定保存機能なし
エラーハンドリング🟡 → 🟢強化済みより詳細なエラーメッセージと検証を追加

⚠️ 追加検討事項

現在は該当しないが、将来的に考慮すべき項目:

  1. Nonces(ワンタイムトークン): 設定保存機能を追加する場合に実装予定
  2. ファイルアップロード制限: 直接アップロード機能を追加する場合に実装予定
  3. ログ機能の拡張: より詳細な監査ログが必要な場合に検討

🚀 セキュリティ強化の効果

修正により以下の脅威から保護されます:

  • XSS攻撃: 出力エスケープで防御
  • SQLインジェクション: Prepared statementとエスケープで防御
  • パストラバーサル攻撃: ファイル名検証で防御
  • 権限昇格: 適切な権限チェックで防御
  • 直接ファイルアクセス: ABSPATHチェックで防御

セキュリティは妥協しない!

プラグインの脆弱性は、サイト全体のリスクに直結します。
生成AIが指摘した問題点は必ず修正し、提示された修正コードを正しく反映してください。

また、AIの知識は最新のセキュリティ脅威には対応できていない可能性があります。
重要な用途で使用する場合は、WordPress開発の専門家によるコードレビューも検討してください。

メモ

生成AIを使えば便利にコードが書けますが、セキュリティの最終責任は開発者にあります。
コードを貼り付けるだけで終わらせず、「なぜこの対策が必要か」を理解しながら進めることが大切です。

プラグインのパッケージ化

作成した pdf-preview-plugin フォルダ全体を選択し、右クリックで「圧縮」または「ZIP形式で圧縮」を選択します。
pdf-preview-plugin.zip という圧縮ファイルが作成されます。

WordPressへのインストール

WordPress の管理画面にログインし、「プラグイン」→「プラグインを追加」→「プラグインのアップロード」を開きます。

手順

  1. 作成した ZIP ファイルを選択
  2. 「今すぐインストール」をクリック
  3. インストール完了後、「有効化」をクリック

動作テスト

まず、「メディア」→「メディアファイルの追加」から、任意のPDFファイルをアップロードします。

次に、投稿または固定ページの本文内に以下のショートコードを記述します

[pdf_preview filename="your-pdf-file.pdf" title="資料タイトル"]

プレビューで確認します。

プレビュー表示で以下の項目を確認してください

  • PDFの1ページ目が正しくプレビュー表示されているか
  • タイトルと説明文が指定どおりに表示されているか
  • 「ダウンロード」ボタンからPDFファイルが正しくダウンロードできるか
  • CSSスタイルが適用され、見た目が整っているか
  • スマートフォンなどでの表示が崩れていないか(レスポンシブ対応)

トラブル時のポイント

表示がうまくいかない場合は、以下をチェックしてみてください。

  • PDFファイル名(filename属性)が正確に指定されているか
     → メディアライブラリでPDFを選び、URLからファイル名をコピーすると確実です。
  • ファイルの配置先やスタイルシートの読み込みパスに間違いがないか

その他の問題があれば、トラブルシューティングとまとめの方法を試してみてください。

基本機能に加えて、見た目や機能をカスタマイズすることで、プラグインをより実用的に仕上げることができます。

1

デザインを調整する

  • pdf-preview-style.css を編集して、配色や余白、フォントサイズなどを調整
  • 生成AIに「もっとモダンな見た目にしたい」「ボタンを角丸にしたい」などの要望を伝える
  • サイト全体のデザインに合わせて、カラースキームやフォントを統一

プロンプト例

  • 「このボタンの色をサイトのメインカラーに変更してください」
  • 「添付のスクリーンショットのようなレイアウトにしてください」
  • 言葉で説明するより、画像1枚の方が正確に伝わることもあります。

2

機能を追加する

  • PDFファイルサイズの表示
  • ダウンロード数のカウント
  • ツールチップでタイトル表示

プロンプト例

  • 「このプラグインに、PDFファイルサイズを表示する機能を追加してください。表示位置はタイトルの下にしてください」
  • 「ダウンロード数を保存し、画面に表示するようにしてください」
プロンプト入力

アップロードした画像のような画面デザインにしてください。
また、CSSの読み込みは、このショートコードを利用しているページのみに限定してください。

アップロードした画像

Claude 回答

アップロードされた画像を参考に、縦並びのカードスタイルデザインに修正し、CSSの読み込みをショートコード使用ページのみに限定します。

アップロードされた画像のデザインに合わせて、WordPressプラグインを以下のように修正しました:

🎨 主な変更点

  • カードスタイルデザインに変更
    • 横並びレイアウトから縦並びのカードスタイルに変更
    • 上部に大きなPDFサムネイル表示
    • 白背景のカードに影付きデザイン
  • ファイル情報の自動表示
    • アップロード日時: 2025年07月15日 形式で表示
    • ファイルサイズ: 280 KB 形式で自動計算・表示
    • ファイル名: PDFファイル名を表示
  • ボタンデザインの改善
    • 「PDFを表示」ボタン:青色 (#5a67d8)
    • 「ダウンロード」ボタン:オレンジ色 (#ed8936)
    • ホバー効果とアニメーション追加
  • CSS読み込み最適化
    • ショートコードが使用されているページでのみCSSを読み込み
    • パフォーマンス向上とページ速度改善
🔧 使用方法(変更なし)
[pdf_preview filename="develop_WordPress-plugin_using_AI.pdf" title="アジェンダ" description="生成AIを使って、PDFファイルをプレビュープラグインを実際に作りながら、プラグインの開発方法を解説します。"]
🚀 新機能
  • 自動ファイル情報取得: アップロード日時とファイルサイズを自動表示
  • パフォーマンス最適化: 必要な時のみCSS読み込み
  • 美しいカードデザイン: 画像と同じ洗練されたUIデザイン
  • アクセシビリティ向上: 適切なalt属性とフォーカス管理

このデザイン変更により、より現代的で使いやすいPDFプレビュー機能を提供できます。画像のデザインに忠実に再現し、同時にWordPressのベストプラクティスに従った実装を維持しています。

「見た目を良くして」、「いい感じにして」などの曖昧な依頼は、AIが意図と異なるコードを生成してしまう原因になります。生成AIに依頼する際は以下のように具体的かつ簡潔に伝えるのがポイントです。

プロンプト例

  • 「既存のコードを維持しつつ、○○の部分だけ変更してください」
  • 「管理画面からも設定できるようにしてください」
  • 「セキュリティ対策(サニタイズ、権限チェック)も含めてください」

カスタマイズ後のセキュリティチェックも忘れずに

新しく機能を追加した場合、それに伴う新たなセキュリティリスクが生じる可能性があります。
以下の点を重点的にチェックしてください。

  • 入力値の検証とサニタイズが適切か
  • HTML出力に esc_html() esc_attr() などが使われているか
  • ファイルアクセス制限や権限チェックが導入されているか

必要に応じて、再度生成AIに「セキュリティの観点で見直して」と依頼してください。

セキュリティチェック プロンプト入力

再度生成したWordPressプラグインコードをセキュリティの観点でチェックしてください。特に以下の点も含め、該当しない場合はその理由を示してください。
– データの無害化
– 出力時のエスケープ
– ワンタイムトークン(Nonces)の使用
– 権限チェック
– ファイルアクセス制限
– 直接アクセスを防止
– データベース操作
– ファイル操作
– オプションや設定
– エラーハンドリング
問題がある場合は、修正コードも提示してください。但し、現在は該当しない項目でありながら、将来に備えた過剰となりかねない実装は不要です。

セキュリティチェック Claude 回答

修正されたWordPressプラグインコードのセキュリティチェックを実施しました。デザイン変更と新機能追加により、複数の新しいセキュリティ問題を発見しました。

📋 最終評価結果

項目評価修正の必要性修正内容
データの無害化🔴 → 🟢🟢 強化完了ファイル情報取得時の厳密な検証を追加
出力時のエスケープ🟢🟢 維持全HTML出力で適切なエスケープ処理
ワンタイムトークン🟢🟢 該当なしフォーム送信・データ変更処理なし
権限チェック🟢🟢 維持管理画面で適切な権限確認
ファイルアクセス制限🟢🟢 強化WordPressアップロードディレクトリ内制限
直接アクセス防止🟢🟢 維持ABSPATH チェック実装済み
データベース操作🟢🟢 維持SQLインジェクション対策完備
ファイル操作🔴 → 🟢🟢 完全修正パストラバーサル攻撃対策実装
オプションや設定🟢🟢 該当なし設定保存機能なし
エラーハンドリング🟢強化セキュアなログ出力追加

🛡️ 追加されたセキュリティ機能

  • ファイルパス制限: WordPressアップロードディレクトリ外のファイルアクセスを完全遮断
  • リアルパス解決: realpath() によるパス正規化でシンボリックリンク攻撃を防御
  • ファイル存在性検証: ファイルの存在・読み取り権限を事前チェック
  • セキュリティログ: 不正アクセス試行をログに記録
  • 配列キー存在チェック: isset() による未定義キーエラー防止
⚠️ セキュリティ上の注意点
本修正により防御される攻撃:
  • パストラバーサル攻撃: ../../../etc/passwd などのパス操作
  • ファイルインクルージョン攻撃: 意図しないファイルへのアクセス
  • ディレクトリリスティング: アップロードディレクトリ外の探索
  • 権限昇格: 不正なファイルアクセスによる情報漏洩
🚀 運用上の改善点
  • エラーログ監視: サーバーログで不正アクセス試行を監視可能
  • デバッグ支援: 問題発生時の詳細な情報取得が可能
  • パフォーマンス: 不正なリクエストの早期判断で処理効率向上

よくある問題と解決方法

プラグインが有効化できない

  • PHPの構文エラーが原因の場合があります。エラーメッセージをコピーして生成AIに修正を依頼しましょう。よくあるのは括弧の閉じ忘れやセミコロンの抜けです。

PDFが表示されない

  • ファイル名が正しいか確認してください。メディアライブラリでPDFを選択し、ファイルURLから正確なファイル名をコピーするのがおすすめです(大文字・小文字も区別されます)。

スタイルが適用されない

  • ブラウザのキャッシュをクリアするか、プラグインを一度無効化してから再度有効化してみてください。テーマとの競合も疑われる場合は、一時的に別テーマに切り替えて検証してみてください。

🎉あなたもプラグイン開発者!

この解説を通して、以下のことを達成できました

  • 実際に動作する WordPress プラグインを作成
  • プラグインの基本構造と開発フローを理解
  • セキュリティの重要性を学習
  • カスタマイズの基本を体験

次のステップ

さらにスキルアップするために

  1. 他の機能にもチャレンジ
    お問い合わせフォーム、画像ギャラリー、SNS共有ボタンなど、実用的な機能にトライ
  2. プラグインを公開
    WordPress.org への登録、自サイトでの配布、GitHubへの公開など、実践の場を広げる
  3. スキルをさらに伸ばす
    WordPress公式ドキュメントの活用や、プラグイン開発コミュニティに参加する

重要なポイント

プラグイン開発は、最初の一歩を踏み出せば案外身近なものです。
「まず動くもの」を作り、小さな改善を重ねていくことが、プラグイン開発成功への近道です!

生成AIは強力なアシスタントですが、セキュリティの確認は必ず自分でも行うようにしてください。
そうした試行錯誤の積み重ねが、確実なスキルの成長となります。

おわりに

このガイドで学んだ知識をベースに、さらに多くのプラグインを作成してWordPressの可能性を広げることができます。最初は単純な機能から始めて、徐々に複雑なものに挑戦していくのがおすすめです。

失敗を恐れず、試行錯誤を楽しみながら進めていくことが大切です。アイデア次第で、WordPressサイトをより便利で魅力的にすることができます!

ご相談・お問い合わせ

月~金 10:00~17:00 受付

2営業日以内に一次回答いたします

関連ブログ

HTML コーディングとプログラミング

【手順図解】VS Code 必須拡張機能とおすすめ設定ガイド

さらに詳しく
HTML コーディングとプログラミング

WordPressプラグイン開発で押さえておきたい必須関数まとめ

さらに詳しく

関連サービス

「Support」、「Technical」、「Customer」、「Service」の文字 と 技術的なWordPress顧客サポート

WordPressセキュリティ保守

さらに詳しく
クラウド上で安全・安定的に運用しているWebサイト、データベース、メール

クラウド ウェブサーバ構築

さらに詳しく

美しく安全なウェブサイト制作

さらに詳しく
計算機

WordPress サイト 制作費 価格表

さらに詳しく