← All changes
|
includes/abilities/widgets/wdesignkit-toggle-widget.php
+16
-0
2.6.1
→
2.7.0
View file →
| @@ -38,8 +38,9 @@ | ||
| 38 | 38 | ], |
| 39 | 39 | 'execute_callback' => 'wdesignkit_mcp_activate_widget', |
| 40 | 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", [ |
| @@ -94,8 +95,9 @@ | ||
| 94 | 95 | ], |
| 95 | 96 | 'execute_callback' => 'wdesignkit_mcp_deactivate_widget', |
| 96 | 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.", |