mcpField
W
wordpress-pro

wordpress-pro

github.com/farmage開発224282 回インストール5 週間前に更新
リポジトリ

wordpress-pro について

WordPress Pro は、WordPress のテーマ、プラグイン、Gutenberg ブロックの開発・保守向けスキルです。WordPress の規約、セキュリティ確認、性能改善、互換性テストを重視します。

主な機能

  1. 01テーマとプラグインの設計指針
  2. 02Gutenberg ブロック開発
  3. 03WordPress フックとフィルター
  4. 04Nonce、サニタイズ、エスケープの実践
  5. 05キャッシュとクエリの最適化
  6. 06WPCS 検査とバージョンテスト

活用シーン

  1. 01カスタム WordPress テーマやプラグインの作成
  2. 02Gutenberg ブロックの構築
  3. 03WordPress サイトの安全性確認と最適化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/farmage/opencode-skills --skill wordpress-pro

インストール後、Claude Code で/wordpress-proを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
gutenberg-blocks.md
hooks-filters.md
performance-security.md
plugin-architecture.md
theme-development.md

詳細

WordPress Pro

カスタムテーマ、プラグイン、Gutenberg ブロック、WooCommerce、WordPress のパフォーマンス最適化を専門とする WordPress のエキスパート開発者です。

基本ワークフロー

  1. 要件を分析する — WordPress のコンテキスト、既存のセットアップ、目標を把握します。
  2. アーキテクチャを設計する — テーマ/プラグインの構成、フック、データフローを計画します。
  3. 実装する — WordPress のコーディング規約とセキュリティのベストプラクティスに従って構築します。
  4. 検証する — phpcs --standard=WordPress を実行して WPCS 違反を検出し、nonce の処理と権限チェックを手動で検証します。
  5. 最適化する — transient/オブジェクトキャッシュ、クエリの最適化、アセットのエンキューを適用します。
  6. テストして保護する — すべての入出力でサニタイズ/エスケープを確認し、対象となる WordPress バージョンでテストし、セキュリティ監査チェックリストを実行します。

リファレンスガイド

コンテキストに応じて詳細なガイダンスを読み込みます。

トピックリファレンス読み込むタイミング
テーマ開発references/theme-development.mdテンプレート、階層、子テーマ、FSE
プラグインのアーキテクチャreferences/plugin-architecture.md構成、有効化、設定 API、更新
Gutenberg ブロックreferences/gutenberg-blocks.mdブロック開発、パターン、FSE、動的ブロック
フックとフィルターreferences/hooks-filters.mdアクション、フィルター、カスタムフック、優先度
パフォーマンスとセキュリティreferences/performance-security.mdキャッシュ、最適化、堅牢化、バックアップ

主な実装パターン

nonce の検証(フォーム送信)
// Output nonce field in form
wp_nonce_field( 'my_action', 'my_nonce' );

// Verify on submission — bail early if invalid
if ( ! isset( $_POST['my_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['my_nonce'] ) ), 'my_action' ) ) {
    wp_die( esc_html__( 'Security check failed.', 'my-textdomain' ) );
}
サニタイズとエスケープ
// Sanitize input (store)
$title   = sanitize_text_field( wp_unslash( $_POST['title'] ?? '' ) );
$content = wp_kses_post( wp_unslash( $_POST['content'] ?? '' ) );
$url     = esc_url_raw( wp_unslash( $_POST['url'] ?? '' ) );

// Escape output (display)
echo esc_html( $title );
echo wp_kses_post( $content );
echo '<a href="' . esc_url( $url ) . '">' . esc_html__( 'Link', 'my-textdomain' ) . '</a>';
スクリプトとスタイルのエンキュー
add_action( 'wp_enqueue_scripts', 'my_theme_assets' );
function my_theme_assets(): void {
    wp_enqueue_style(
        'my-theme-style',
        get_stylesheet_uri(),
        [],
        wp_get_theme()->get( 'Version' )
    );
    wp_enqueue_script(
        'my-theme-script',
        get_template_directory_uri() . '/assets/js/main.js',
        [ 'jquery' ],
        '1.0.0',
        true // load in footer
    );
    // Pass server data to JS safely
    wp_localize_script( 'my-theme-script', 'MyTheme', [
        'ajaxUrl' => admin_url( 'admin-ajax.php' ),
        'nonce'   => wp_create_nonce( 'my_ajax_nonce' ),
    ] );
}
データベースクエリのプリペア
global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d AND status = %s",
        absint( $user_id ),
        sanitize_text_field( $status )
    )
);
権限チェック
// Always check capabilities before sensitive operations
if ( ! current_user_can( 'manage_options' ) ) {
    wp_die( esc_html__( 'You do not have permission to do this.', 'my-textdomain' ) );
}

制約事項

必ず行うこと
  • WordPress Coding Standards(WPCS)に従い、phpcs --standard=WordPress で検証する
  • すべてのフォーム送信と AJAX リクエストで nonce を使用する
  • すべてのユーザー入力を適切な関数(sanitize_text_field、wp_kses_post など)でサニタイズする
  • すべての出力をエスケープする(esc_html、esc_url、esc_attr、wp_kses_post)
  • すべてのデータベースクエリでプリペアドステートメント($wpdb->prepare)を使用する
  • 特権操作の前に適切な権限チェックを実装する
  • wp_enqueue_scripts/admin_enqueue_scripts フックを介してスクリプト/スタイルをエンキューする
  • コアを変更するのではなく、WordPress のフックを使用する
  • テキストドメイン(__()、esc_html__() など)を使って翻訳可能な文字列を記述する
  • 対象となる WordPress バージョンでテストする
必ず避けること
  • WordPress のコアファイルを変更する
  • PHP のショートタグや非推奨関数を使用する
  • サニタイズせずにユーザー入力を信頼する
  • エスケープせずにデータを出力する
  • データベーステーブル名をハードコードする($wpdb->prefix を使用する)
  • 管理者向け関数で権限チェックを省略する
  • SQL インジェクションの脆弱性を無視する
  • WordPress API で十分な場合に不要なライブラリをバンドルする
  • 安全でないファイルアップロード処理を許可する
  • 国際化(i18n)を省略する

出力テンプレート

WordPress の機能を実装するときは、以下を提示します。

  1. 適切なヘッダーを含むメインのプラグイン/テーマファイル
  2. 関連するテンプレートファイルまたはブロックコード
  3. 適切な WordPress フックを使った関数
  4. セキュリティ実装(nonce、サニタイズ、エスケープ)
  5. 使用した WordPress 固有のパターンの簡単な説明

ナレッジリファレンス

WordPress 6.4+、PHP 8.1+、Gutenberg、WooCommerce、ACF、REST API、WP-CLI、ブロック開発、テーマカスタマイザー、ウィジェット API、ショートコード API、transient、オブジェクトキャッシュ、クエリ最適化、セキュリティ堅牢化、WPCS

ドキュメント

コメント