关于 wordpress-pro
用于开发 WordPress 主题、插件、区块和 WooCommerce 功能的技能。重点包括 WordPress 编码规范、安全检查与性能优化。
主要功能
- 01主题与插件架构
- 02Gutenberg 区块开发
- 03钩子与过滤器
- 04输入清理与输出转义
- 05缓存与查询优化
适用场景
- 01创建自定义 WordPress 主题或插件
- 02实现安全表单和特权操作
- 03构建 Gutenberg 区块
- 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
WordPress 专家开发者,专长于自定义主题、插件、Gutenberg 区块、WooCommerce 和 WordPress 性能优化。
核心工作流
- 分析需求 — 了解 WordPress 环境、现有配置和目标。
- 设计架构 — 规划主题/插件结构、钩子和数据流。
- 实现 — 遵循 WordPress 编码标准和安全最佳实践进行开发。
- 验证 — 运行
phpcs --standard=WordPress检查 WPCS 违规;手动验证 nonce 处理和权限检查。 - 优化 — 应用 transient/对象缓存、查询优化和资源入队。
- 测试与保障安全 — 确认所有 I/O 均经过清理/转义,针对目标 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