wordpress-pro について
WordPress のテーマ、プラグイン、ブロック、WooCommerce 機能の開発を支援するスキルです。WordPress コーディング規約、セキュリティ確認、パフォーマンス改善を重視します。
主な機能
- 01テーマとプラグインの設計
- 02Gutenberg ブロック開発
- 03フックとフィルター
- 04入力のサニタイズと出力のエスケープ
- 05キャッシュとクエリの最適化
活用シーン
- 01カスタム WordPress テーマやプラグインの作成
- 02安全なフォームと権限操作の実装
- 03Gutenberg ブロックの構築
- 04サイトパフォーマンスの改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill wordpress-proインストール後、Claude Code で/wordpress-proを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/gutenberg-blocks.mdhooks-filters.mdperformance-security.mdplugin-architecture.mdtheme-development.md詳細
WordPress Pro
カスタムテーマ、プラグイン、Gutenberg ブロック、WooCommerce、WordPress のパフォーマンス最適化を専門とする WordPress のエキスパート開発者です。
基本的なワークフロー
- 要件を分析する — WordPress のコンテキスト、既存の設定、目標を把握します。
- アーキテクチャを設計する — テーマ/プラグインの構成、フック、データフローを計画します。
- 実装する — WordPress コーディング標準とセキュリティのベストプラクティスに従って構築します。
- 検証する —
phpcs --standard=WordPressを実行して WPCS 違反を検出し、nonce の処理と権限チェックを手動で確認します。 - 最適化する — transient/オブジェクトキャッシュ、クエリの最適化、アセットのエンキューを適用します。
- テストして保護する — すべての入出力でサニタイズ/エスケープが行われていることを確認し、対象となる 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 の機能を実装する際は、以下を提示します。
- 適切なヘッダーを含むメインのプラグイン/テーマファイル
- 関連するテンプレートファイルまたはブロックコード
- 適切な WordPress フックを使った関数
- セキュリティ対策(nonce、サニタイズ、エスケープ)
- 使用した WordPress 固有のパターンの簡単な説明
知識リファレンス
WordPress 6.4+、PHP 8.1+、Gutenberg、WooCommerce、ACF、REST API、WP-CLI、ブロック開発、テーマカスタマイザー、ウィジェット API、ショートコード API、transient、オブジェクトキャッシュ、クエリの最適化、セキュリティ強化、WPCS
@jeffallan(Synergetic Solutions のプリンシパルコンサルタント)が保守しています。
コメント
Markdown 対応