← All changes
|
includes/abilities/widgets/wdesignkit-toggle-widget.php
+22
-6
2.4.0
→
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.", |