wp-interactivity-api
Use when building or debugging WordPress Interactivity API features (data-wp-* directives, @wordpress/interactivity store/state/actions, block viewScriptModule integration, wp_interactivity_*()) including performance, hydration, and directive behavior.
DeepseekModel
官方收录技能
质量 优秀 · 90
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=wordpress-agent-skills-skills-wp-interactivity-api-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name wp-interactivity-api description Use when building or debugging WordPress Interactivity API features (data-wp-* directives, @wordpress/interactivity store/state/actions, block viewScriptModule integration, wp_interactivity_*()) including performance, hydration, and directive behavior. compatibility Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI. WP Interactivity API When to use Use this skill when the user mentions: Interactivity API, @wordpress/interactivity , data-wp-interactive , data-wp-on--* , data-wp-bind--* , data-wp-context , block viewScriptModule / module-based view scripts, hydration issues or “directives don’t fire”. Inputs required Repo root + triage output ( wp-project-triage ). Which block/theme/plugin surfaces are affected (frontend, editor, both). Any constraints: WP version, whether modules are supported in the build. Procedure 1) Detect existing usage + integration style Search for: data-wp-interactive @wordpress/interactivity viewScriptModule Decide: Is this a block providing interactivity via block.json view script module? Is this theme-level interactivity? Is this plugin-side “enhance existing markup” usage? If you’re creating a new interactive block (not just debugging), prefer the official scaffold template: @wordpress/create-block-interactive-template (via @wordpress/create-block ) 2) Identify the store(s) Locate store definitions and confirm: state shape, actions (mutations), callbacks/event handlers used by data-wp-on--* . 3) Server-side rendering (best practice) Pre-render HTML on the server before outputting to ensure: Correct initial state in the HTML before JavaScript loads (no layout shift). SEO benefits and faster perceived load time. Seamless hydration when the client-side JavaScript takes over. Enable server directive processing For components using block.json , add supports.interactivity : { "supports" : { "interactivity" : true } } For themes/plugins without block.json , use wp_interactivity_process_directives() to process directives. Initialize state/context in PHP Use wp_interactivity_state() to define initial global state: wp_interactivity_state ( 'myPlugin' , array ( 'items' => array ( 'Apple' , 'Banana' , 'Cherry' ), 'hasItems' => true , )); For local context, use wp_interactivity_data_wp_context() : <?php $context = array ( 'isOpen' => false ); ?> <div <?php echo wp_interactivity_data_wp_context ( $context ); ?> > ... </div> Define derived state in PHP When derived state affects initial HTML rendering, replicate the logic in PHP: wp_interactivity_state ( 'myPlugin' , array ( 'items' => array ( 'Apple' , 'Banana' ), 'hasItems' => function ( ) { $state = wp_interactivity_state (); return count ( $state [ 'items' ] ) > 0 ; } )); This ensures directives like data-wp-bind--hidden="!state.hasItems" render correctly on first load. For detailed examples and patterns, see references/server-side-rendering.md . 4) Implement or change directives safely When touching markup directives: keep directive usage minimal and scoped, prefer stable data attributes that map clearly to store state, ensure server-rendered markup + client hydration align. WordPress 6.9 changes: data-wp-ignore is deprecated and will be removed in future versions. It broke context inheritance and caused issues with client-side navigation. Avoid using it. Unique directive IDs : Multiple directives of the same type can now exist on one element using the --- separator (e.g., data-wp-on--click---plugin-a="..." and data-wp-on--click---plugin-b="..." ). New TypeScript types : AsyncAction<ReturnType> and TypeYield<T> help with async action typing. For quick directive reminders, see references/directives-quickref.md . 5) Build/tooling alignment Verify the repo supports the required module build path: if it uses @wordpress/scripts , prefer its conventions. if it uses custom bundling, confirm module output is supported. 6) Debug common failure modes If “nothing happens” on interaction: confirm the viewScriptModule is enqueued/loaded, confirm the DOM element has data-wp-interactive , confirm the store namespace matches the directive’s value, confirm there are no JS errors before hydration. See references/debugging.md . Verification wp-project-triage indicates signals.usesInteractivityApi: true after your change (if applicable). Manual smoke test: directive triggers and state updates as expected. If tests exist: add/extend Playwright E2E around the interaction path. Failure modes / debugging Directives present but inert: view script not loading, wrong module entrypoint, or missing data-wp-interactive . Hydration mismatch / flicker: server markup differs from client expectations; simplify or align initial state. derived state not defined in PHP: use wp_interactivity_state() with closures. Initial content missing or wrong: supports.interactivity not set in block.json (for blocks). wp_interactivity_process_directives() not called (for themes/plugins). state/context not initialized in PHP before render. Layout shift on load: derived state like state.hasItems missing on server, causing hidden attribute to be absent. Performance regressions: overly broad interactive roots; scope interactivity to smaller subtrees. Client-side navigation issues (WordPress 6.9): getServerState() and getServerContext() now reset between page transitions—ensure your code doesn't assume stale values persist. Router regions now support attachTo for rendering overlays (modals, pop-ups) dynamically. Escalation If repo build constraints are unclear, ask: "Is this using @wordpress/scripts or a custom bundler (webpack/vite)?" Consult: references/server-side-rendering.md references/directives-quickref.md references/debugging.md
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |