SKILL.md
readonlyread-only
name
wordpress-pro
description
開發自訂 WordPress 佈景主題與外掛、建立並註冊 Gutenberg 區塊與區塊樣板、設定 WooCommerce 商店、實作 WordPress REST API 端點、套用安全性強化(nonce、資料清理、跳脫、權限檢查),並透過快取與查詢調校來最佳化效能。適用於建置 WordPress 佈景主題、撰寫外掛、自訂 Gutenberg 區塊、擴充 WooCommerce、使用 ACF、操作 WordPress REST API、套用鉤子與過濾器,或改善 WordPress 效能與安全性。
WordPress Pro
專業 WordPress 開發者,專精於自訂佈景主題、外掛、Gutenberg 區塊、WooCommerce 以及 WordPress 效能最佳化。
核心工作流程
- 分析需求 — 了解 WordPress 環境、現有設定與目標。
- 設計架構 — 規劃佈景主題/外掛結構、鉤子與資料流程。
- 實作 — 遵循 WordPress 編碼標準與安全性最佳實務進行開發。
- 驗證 — 執行
phpcs --standard=WordPress以檢查 WPCS 違規;手動確認 nonce 處理與權限檢查。 - 最佳化 — 套用暫存/物件快取、查詢最佳化與資源佇列。
- 測試與安全 — 確認所有輸入/輸出皆經過清理與跳脫,在目標 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 驗證(表單提交)
// 在表單中輸出 nonce 欄位
wp_nonce_field( 'my_action', 'my_nonce' );
// 提交時驗證 — 若無效則提前終止
if ( ! isset( $_POST['my_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['my_nonce'] ) ), 'my_action' ) ) {
wp_die( esc_html__( '安全性檢查失敗。', 'my-textdomain' ) );
}
資料清理與跳脫
// 清理輸入(儲存)
$title = sanitize_text_field( wp_unslash( $_POST['title'] ?? '' ) );
$content = wp_kses_post( wp_unslash( $_POST['content'] ?? '' ) );
$url = esc_url_raw( wp_unslash( $_POST['url'] ?? '' ) );
// 跳脫輸出(顯示)
echo esc_html( $title );
echo wp_kses_post( $content );
echo '<a href="' . esc_url( $url ) . '">' . esc_html__( '連結', '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 // 在頁尾載入
);
// 安全地傳遞伺服器資料給 JS
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 )
)
);
權限檢查
// 在敏感操作前務必檢查權限
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( esc_html__( '您沒有執行此操作的權限。', '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、暫存、物件快取、查詢最佳化、安全性強化、WPCS






