用途:当涉及 Interactivity API、@wordpress/interactivity、data-wp-interactive、data-wp-on--、data-wp-bind--、data-wp-context、区块 viewScriptModule 或模块化视图脚本,以及水合问题、指令不触发时使用。需提供仓库根目录与 wp-project-triage 输出,明确受影响的区块/主题/插件表面(前端、编辑器或两者)及 WP 版本、构建是否支持模块等约束。
主要能力:识别现有使用与集成方式(区块、主题级或插件增强标记);定位 store 定义并确认 state、actions 与 data-wp-on--* 事件处理器;服务端预渲染 HTML 以保证初始状态正确、利于 SEO 并实现无缝水合;在 PHP 端用 wp_interactivity_state() 初始化全局状态与派生状态,用 wp_interactivity_data_wp_context() 设置局部上下文;安全地调整指令;对齐构建工具链;排查常见故障。
使用方式:区块在 block.json 中添加 supports.interactivity;无 block.json 的主题/插件使用 wp_interactivity_process_directives()。新交互区块建议用 @wordpress/create-block-interactive-template 脚手架。PHP 初始化示例:wp_interactivity_state( 'myPlugin', array( 'items' => array( 'Apple', 'Banana', 'Cherry' ), 'hasItems' => true ) );。局部上下文示例:$context = array( 'isOpen' => false ); 再结合 wp_interactivity_data_wp_context( $context ) 输出。
注意 WordPress 6.9 变化:data-wp-ignore 已弃用;同一元素可用 --- 分隔符定义多个同类型指令;新增 AsyncAction 与 TypeYield 类型;getServerState() 与 getServerContext() 在页面切换间重置;Router regions 支持 attachTo。
适用场景:交互区块、主题级交互、插件增强现有标记,以及水合闪烁、布局偏移、性能回退、客户端导航问题等调试。
限制与失败模式:指令存在但无反应多因视图脚本未加载或缺少 data-wp-interactive;水合不匹配需对齐服务端与客户端初始状态;派生状态未在 PHP 定义会导致隐藏属性缺失;性能回退常因交互根范围过大,应缩小子树。构建约束不明时需确认使用 @wordpress/scripts 还是自定义打包器。详细内容见 references/server-side-rendering.md、references/directives-quickref.md、references/debugging.md。