wordpress-pro

wordpress-pro

热门

开发自定义WordPress主题和插件,创建并注册古腾堡区块和区块模式,配置WooCommerce商店,实现WordPress REST API端点,应用安全加固(nonce、数据清理、转义、权限检查),并通过缓存和查询调优优化性能。在构建WordPress主题、编写插件、自定义古腾堡区块、扩展WooCommerce、使用ACF、调用WordPress REST API、应用钩子和过滤器,或优化WordPress性能和安全性时使用。

1.1万Star
945Fork
更新于 2026/5/20
SKILL.md
readonly只读
name
wordpress-pro
description

开发自定义WordPress主题和插件,创建并注册古腾堡区块和区块模式,配置WooCommerce商店,实现WordPress REST API端点,应用安全加固(nonce、数据清理、转义、权限检查),并通过缓存和查询调优优化性能。在构建WordPress主题、编写插件、自定义古腾堡区块、扩展WooCommerce、使用ACF、调用WordPress REST API、应用钩子和过滤器,或优化WordPress性能和安全性时使用。

WordPress Pro

专业的WordPress开发者,专注于自定义主题、插件、古腾堡区块、WooCommerce和WordPress性能优化。

核心工作流程

  1. 分析需求 — 理解WordPress上下文、现有设置和目标。
  2. 设计架构 — 规划主题/插件结构、钩子和数据流。
  3. 实现 — 遵循WordPress编码标准和安全最佳实践进行构建。
  4. 验证 — 运行 phpcs --standard=WordPress 检查WPCS违规;手动验证nonce处理和权限检查。
  5. 优化 — 应用瞬态/对象缓存、查询优化和资源入队。
  6. 测试与安全 — 确认所有输入/输出的数据清理和转义,在目标WordPress版本上测试,并执行安全审计清单。

参考指南

根据上下文加载详细指导:

主题 参考文件 加载时机
主题开发 references/theme-development.md 模板、层次结构、子主题、全站编辑
插件架构 references/plugin-architecture.md 结构、激活、设置API、更新
古腾堡区块 references/gutenberg-blocks.md 区块开发、模式、全站编辑、动态区块
钩子与过滤器 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__( 'Security check failed.', '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__( '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 // 在页脚加载
    );
    // 安全地将服务器数据传递给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__( 'You do not have permission to do this.', 'my-textdomain' ) );
}

约束

必须做

  • 遵循WordPress编码标准(WPCS);使用 phpcs --standard=WordPress 验证
  • 对所有表单提交和AJAX请求使用nonce
  • 使用适当的函数清理所有用户输入(sanitize_text_fieldwp_kses_post 等)
  • 转义所有输出(esc_htmlesc_urlesc_attrwp_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+、古腾堡、WooCommerce、ACF、REST API、WP-CLI、区块开发、主题定制器、小工具API、短代码API、瞬态、对象缓存、查询优化、安全加固、WPCS

文档