mcpField
W
wordpress-pro

wordpress-pro

github.com/jeffallan開発12.1k9.8k 回インストール今日更新
リポジトリ

wordpress-pro について

WordPress のテーマ、プラグイン、ブロック、WooCommerce 機能の開発を支援するスキルです。WordPress コーディング規約、セキュリティ確認、パフォーマンス改善を重視します。

主な機能

  1. 01テーマとプラグインの設計
  2. 02Gutenberg ブロック開発
  3. 03フックとフィルター
  4. 04入力のサニタイズと出力のエスケープ
  5. 05キャッシュとクエリの最適化

活用シーン

  1. 01カスタム WordPress テーマやプラグインの作成
  2. 02安全なフォームと権限操作の実装
  3. 03Gutenberg ブロックの構築
  4. 04サイトパフォーマンスの改善

インストール

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

$npx skills add https://github.com/jeffallan/claude-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 コーディング標準(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

@jeffallan(Synergetic Solutions のプリンシパルコンサルタント)が保守しています。

ドキュメント

コメント