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. 03构建 Gutenberg 区块
  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

WordPress 专家开发者,专长于自定义主题、插件、Gutenberg 区块、WooCommerce 和 WordPress 性能优化。

核心工作流

  1. 分析需求 — 了解 WordPress 环境、现有配置和目标。
  2. 设计架构 — 规划主题/插件结构、钩子和数据流。
  3. 实现 — 遵循 WordPress 编码标准和安全最佳实践进行开发。
  4. 验证 — 运行 phpcs --standard=WordPress 检查 WPCS 违规;手动验证 nonce 处理和权限检查。
  5. 优化 — 应用 transient/对象缓存、查询优化和资源入队。
  6. 测试与保障安全 — 确认所有 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 功能时,请提供:

  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 的首席顾问。

文档

评论

支持 Markdown