PluginProbe
WDesignKit – AI Templates, Widget Builder & MCP Workflow / 2.7.0
WDesignKit – AI Templates, Widget Builder & MCP Workflow v2.7.0
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 1.0.16 All 129 releases
wdesignkit / includes / abilities / settings / wdesignkit-widget-builders-toggle.php

wdesignkit-widget-builders-toggle.php in WDesignKit – AI Templates, Widget Builder & MCP Workflow 2.7.0, at includes/abilities/settings/wdesignkit-widget-builders-toggle.php

188 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Abilities: Get and toggle WDesignKit widget builder on/off states.
4 */
5
6 declare(strict_types=1);
7
8 if (!defined('ABSPATH')) {
9 exit();
10 }
11
12 wp_register_ability('wdesignkit/get-widget-builders', [
13 'label' => __('Get WDesignKit Widget Builder States', 'wdesignkit'),
14 'description' => __(
15 'Returns the current enabled/disabled state for each page builder integration: Elementor, Gutenberg, Gutenberg Core (native blocks), and Bricks. Also returns the master widget builder feature toggle.',
16 'wdesignkit',
17 ),
18 'category' => 'wdesignkit',
19 'input_schema' => [
20 'type' => 'object',
21 ],
22 'output_schema' => [
23 'type' => 'object',
24 'properties' => [
25 'success' => ['type' => 'boolean'],
26 'builders' => ['type' => 'object'],
27 ],
28 ],
29 'execute_callback' => 'wdesignkit_mcp_get_widget_builders',
30 'permission_callback' => 'wdesignkit_mcp_permission_callback',
31 'meta' => [
32 'public' => true,
33 'show_in_rest' => true,
34 'mcp' => ['public' => true],
35 'annotations' => [
36 'instructions' => implode("\n", [
37 'Returns the current enabled/disabled state for each page builder integration.',
38 'Keys: builder (master toggle), elementor_builder, gutenberg_builder, gutenberg_core_builder, bricks_builder.',
39 'Use wdesignkit/toggle-widget-builders to change any of these states.',
40 ]),
41 'readonly' => true,
42 'destructive' => false,
43 'idempotent' => true,
44 ],
45 ],
46 ]);
47
48 wp_register_ability('wdesignkit/toggle-widget-builders', [
49 'label' => __('Toggle WDesignKit Widget Builders', 'wdesignkit'),
50 'description' => __(
51 'Enables or disables individual page builder integrations (Elementor, Gutenberg, Gutenberg Core, Bricks) and the master widget builder feature toggle. Only the keys you pass are changed; omitted keys retain their current values.',
52 'wdesignkit',
53 ),
54 'category' => 'wdesignkit',
55 'input_schema' => [
56 'type' => 'object',
57 'properties' => [
58 'builder' => [
59 'type' => 'boolean',
60 'description' => 'Master toggle for the entire widget builder feature.',
61 ],
62 'elementor_builder' => [
63 'type' => 'boolean',
64 'description' => 'Enable or disable Elementor widget builder integration.',
65 ],
66 'gutenberg_builder' => [
67 'type' => 'boolean',
68 'description' => 'Enable or disable Gutenberg block builder integration.',
69 ],
70 'gutenberg_core_builder' => [
71 'type' => 'boolean',
72 'description' => 'Enable or disable native WordPress core block builder integration.',
73 ],
74 'bricks_builder' => [
75 'type' => 'boolean',
76 'description' => 'Enable or disable Bricks widget builder integration.',
77 ],
78 ],
79 'additionalProperties' => false,
80 ],
81 'output_schema' => [
82 'type' => 'object',
83 'properties' => [
84 'success' => ['type' => 'boolean'],
85 'message' => ['type' => 'string'],
86 'builders' => ['type' => 'object'],
87 ],
88 ],
89 'execute_callback' => 'wdesignkit_mcp_toggle_widget_builders',
90 'permission_callback' => 'wdesignkit_mcp_permission_callback',
91 'meta' => [
92 'public' => true,
93 'show_in_rest' => true,
94 'mcp' => ['public' => true],
95 'annotations' => [
96 'instructions' => implode("\n", [
97 'Toggles individual widget builder integrations on or off.',
98 'Only pass the builders you want to change; unmentioned builders keep their current state.',
99 'Changes persist immediately in wkit_settings_panel. A page reload in WP admin may be needed for UI to reflect changes.',
100 ]),
101 'readonly' => false,
102 'destructive' => false,
103 'idempotent' => true,
104 ],
105 ],
106 ]);
107
108 function wdesignkit_mcp_get_widget_builders(array $input): array {
109 $settings = get_option('wkit_settings_panel', []);
110 if (!is_array($settings)) {
111 $settings = [];
112 }
113
114 $defaults = [
115 'builder' => true,
116 'elementor_builder' => true,
117 'gutenberg_builder' => true,
118 'gutenberg_core_builder' => false,
119 'bricks_builder' => false,
120 ];
121
122 $builders = [];
123 foreach ($defaults as $key => $default) {
124 $builders[$key] = isset($settings[$key]) ? (bool) $settings[$key] : $default;
125 }
126
127 return [
128 'success' => true,
129 'builders' => $builders,
130 ];
131 }
132
133 function wdesignkit_mcp_toggle_widget_builders(array $input): array {
134 $settings = get_option('wkit_settings_panel', []);
135 if (!is_array($settings)) {
136 $settings = [];
137 }
138
139 $allowed = ['builder', 'elementor_builder', 'gutenberg_builder', 'gutenberg_core_builder', 'bricks_builder'];
140 $changed = [];
141
142 foreach ($allowed as $key) {
143 if (isset($input[$key])) {
144 $settings[$key] = (bool) $input[$key];
145 $changed[] = $key;
146 }
147 }
148
149 if (empty($changed)) {
150 $defaults = [
151 'builder' => true,
152 'elementor_builder' => true,
153 'gutenberg_builder' => true,
154 'gutenberg_core_builder' => false,
155 'bricks_builder' => false,
156 ];
157 $builders = [];
158 foreach ($defaults as $key => $default) {
159 $builders[$key] = isset($settings[$key]) ? (bool) $settings[$key] : $default;
160 }
161 return [
162 'success' => true,
163 'message' => 'No builder settings provided to update.',
164 'builders' => $builders,
165 ];
166 }
167
168 update_option('wkit_settings_panel', $settings);
169
170 $defaults = [
171 'builder' => true,
172 'elementor_builder' => true,
173 'gutenberg_builder' => true,
174 'gutenberg_core_builder' => false,
175 'bricks_builder' => false,
176 ];
177 $builders = [];
178 foreach ($defaults as $key => $default) {
179 $builders[$key] = isset($settings[$key]) ? (bool) $settings[$key] : $default;
180 }
181
182 return [
183 'success' => true,
184 'message' => 'Builder settings updated: ' . implode(', ', $changed),
185 'builders' => $builders,
186 ];
187 }
188