PluginProbe
WDesignKit – AI Templates, Widget Builder & MCP Workflow / 2.7.0
WDesignKit – AI Templates, Widget Builder & MCP Workflow v2.7.0
2.7.1 2.7.0 2.6.6 2.6.5 2.6.4 2.6.3 2.6.2 2.6.1 2.6.0 2.5.5 2.5.4 2.5.3 2.5.2 2.5.1 2.5.0 2.4.0 2.3.3 2.3.2 2.3.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 All 130 releases
← All changes | includes/abilities/widgets/wdesignkit-toggle-widget.php +22 -6 2.5.4 → 2.7.0 View file →
@@ -9,12 +9,12 @@
9 9 exit();
10 10 }
11 11
12 12 wp_register_ability('wdesignkit/activate-widget', [
13 - 'label' => __('Activate WDesignKit Widget', 'sprout-mcp'),
13 + 'label' => __('Activate WDesignKit Widget', 'wdesignkit'),
14 14 'description' => __(
15 15 'Activates a deactivated widget so it gets loaded by the page builder. The widget files remain unchanged; this only updates the activation status.',
16 - 'sprout-mcp',
16 + 'wdesignkit',
17 17 ),
18 18 'category' => 'wdesignkit',
19 19 'input_schema' => [
20 20 'type' => 'object',
@@ -36,10 +36,11 @@
36 36 'status' => ['type' => 'string'],
37 37 ],
38 38 ],
39 39 'execute_callback' => 'wdesignkit_mcp_activate_widget',
40 - 'permission_callback' => 'sprout_mcp_permission_callback',
40 + 'permission_callback' => 'wdesignkit_mcp_permission_callback',
41 41 'meta' => [
42 + 'public' => true,
42 43 'show_in_rest' => true,
43 44 'mcp' => ['public' => true],
44 45 'annotations' => [
45 46 'instructions' => implode("\n", [
@@ -56,12 +57,12 @@
56 57 ],
57 58 ]);
58 59
59 60 wp_register_ability('wdesignkit/deactivate-widget', [
60 - 'label' => __('Deactivate WDesignKit Widget', 'sprout-mcp'),
61 + 'label' => __('Deactivate WDesignKit Widget', 'wdesignkit'),
61 62 'description' => __(
62 63 'Deactivates a widget so it stops loading on the frontend. The widget files are preserved; this only updates the activation status. Useful for temporarily disabling a widget without deleting it.',
63 - 'sprout-mcp',
64 + 'wdesignkit',
64 65 ),
65 66 'category' => 'wdesignkit',
66 67 'input_schema' => [
67 68 'type' => 'object',
@@ -92,10 +93,11 @@
92 93 'status' => ['type' => 'string'],
93 94 ],
94 95 ],
95 96 'execute_callback' => 'wdesignkit_mcp_deactivate_widget',
96 - 'permission_callback' => 'sprout_mcp_permission_callback',
97 + 'permission_callback' => 'wdesignkit_mcp_permission_callback',
97 98 'meta' => [
99 + 'public' => true,
98 100 'show_in_rest' => true,
99 101 'mcp' => ['public' => true],
100 102 'annotations' => [
101 103 'instructions' => implode("\n", [
@@ -273,8 +275,16 @@
273 275 }
274 276
275 277 update_option('wkit_deactivate_widgets', array_values($deactivated), false);
276 278
279 + // Activating removes the widget from wkit_deactivate_widgets, which the cached
280 + // registry excludes by widget_id — this changes registration eligibility without
281 + // touching any widget file, so the cache must be invalidated even though nothing
282 + // was written to disk.
283 + if (function_exists('wdesignkit_invalidate_widget_registry')) {
284 + wdesignkit_invalidate_widget_registry($widget_location['builder']);
285 + }
286 +
277 287 return [
278 288 'success' => true,
279 289 'message' => "Widget '{$widget_id}' ({$widget_location['builder']}/{$widget_location['folder']}) has been activated.",
280 290 'status' => 'activated',
@@ -352,8 +362,14 @@
352 362 'is_activated' => 'deactive',
353 363 ];
354 364
355 365 update_option('wkit_deactivate_widgets', $deactivated, false);
366 +
367 + // Same reasoning as activate-widget: deactivation is a wkit_deactivate_widgets change,
368 + // not a file write, but the cached registry bakes that list in — must invalidate.
369 + if (function_exists('wdesignkit_invalidate_widget_registry')) {
370 + wdesignkit_invalidate_widget_registry($builder);
371 + }
356 372
357 373 return [
358 374 'success' => true,
359 375 'message' => "Widget '{$widget_id}' ({$widget_location['builder']}/{$widget_location['folder']}) has been deactivated.",