PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 All 508 releases
← All changes | jetpack_vendor/automattic/jetpack-search/src/customizer/class-customizer.php +366 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,366 @@
1 +<?php
2 +/**
3 + * Jetpack Search Customizer Integration
4 + *
5 + * @package @automattic/jetpack-search
6 + */
7 +
8 +namespace Automattic\Jetpack\Search;
9 +
10 +use Automattic\Jetpack\Assets;
11 +use WP_Customize_Color_Control;
12 +use WP_Customize_Manager;
13 +
14 +/**
15 + * Class to customize search on the site.
16 + *
17 + * @phan-constructor-used-for-side-effects
18 + */
19 +class Customizer {
20 + /**
21 + * Search Plan class.
22 + *
23 + * @var Plan
24 + */
25 + public $plan;
26 +
27 + /**
28 + * Class initialization.
29 + */
30 + public function __construct() {
31 + add_action( 'customize_register', array( $this, 'customize_register' ) );
32 + add_action( 'customize_controls_enqueue_scripts', array( $this, 'customize_controls_enqueue_scripts' ) );
33 + $this->plan = new Plan();
34 + }
35 +
36 + /**
37 + * Initialize Customizer controls.
38 + *
39 + * @param WP_Customize_Manager $wp_customize Customizer instance.
40 + */
41 + public function customize_register( $wp_customize ) {
42 + $section_id = 'jetpack_search';
43 + $setting_prefix = Options::OPTION_PREFIX;
44 +
45 + $wp_customize->add_section(
46 + $section_id,
47 + array(
48 + /** "Search" is a product name, do not translate. */
49 + 'title' => 'Jetpack Search',
50 + 'capability' => 'edit_theme_options',
51 + 'priority' => 200,
52 + )
53 + );
54 +
55 + $id = $setting_prefix . 'color_theme';
56 + $wp_customize->add_setting(
57 + $id,
58 + array(
59 + 'default' => 'light',
60 + 'transport' => 'postMessage',
61 + 'type' => 'option',
62 + )
63 + );
64 + $wp_customize->add_control(
65 + $id,
66 + array(
67 + 'label' => __( 'Theme', 'jetpack-search-pkg' ),
68 + 'description' => __( 'Select a theme for your search overlay.', 'jetpack-search-pkg' ),
69 + 'section' => $section_id,
70 + 'type' => 'radio',
71 + 'choices' => array(
72 + 'light' => __( 'Light', 'jetpack-search-pkg' ),
73 + 'dark' => __( 'Dark', 'jetpack-search-pkg' ),
74 + ),
75 + )
76 + );
77 +
78 + $id = $setting_prefix . 'result_format';
79 + $wp_customize->add_setting(
80 + $id,
81 + array(
82 + 'default' => 'minimal',
83 + 'transport' => 'postMessage',
84 + 'type' => 'option',
85 + )
86 + );
87 + $wp_customize->add_control(
88 + $id,
89 + array(
90 + 'label' => __( 'Result Format', 'jetpack-search-pkg' ),
91 + 'description' => __( 'Choose how the search results look.', 'jetpack-search-pkg' ),
92 + 'section' => $section_id,
93 + 'type' => 'select',
94 + 'choices' => array(
95 + 'minimal' => __( 'Minimal', 'jetpack-search-pkg' ),
96 + 'expanded' => __( 'Expanded (shows images)', 'jetpack-search-pkg' ),
97 + 'product' => __( 'Product (for WooCommerce stores)', 'jetpack-search-pkg' ),
98 + ),
99 + )
100 + );
101 +
102 + $id = $setting_prefix . 'default_sort';
103 + $wp_customize->add_setting(
104 + $id,
105 + array(
106 + 'default' => 'relevance',
107 + 'type' => 'option',
108 + )
109 + );
110 + $wp_customize->add_control(
111 + $id,
112 + array(
113 + 'choices' => array(
114 + 'relevance' => __( 'Relevance (recommended)', 'jetpack-search-pkg' ),
115 + 'newest' => __( 'Newest first', 'jetpack-search-pkg' ),
116 + 'oldest' => __( 'Oldest first', 'jetpack-search-pkg' ),
117 + 'rating_desc' => __( 'Product rating', 'jetpack-search-pkg' ),
118 + 'price_asc' => __( 'Price: low to high', 'jetpack-search-pkg' ),
119 + 'price_desc' => __( 'Price: high to low', 'jetpack-search-pkg' ),
120 + ),
121 + 'description' => __( 'Pick the initial sort for your search results.', 'jetpack-search-pkg' ),
122 + 'label' => __( 'Default Sort', 'jetpack-search-pkg' ),
123 + 'section' => $section_id,
124 + 'type' => 'select',
125 + )
126 + );
127 +
128 + $id = $setting_prefix . 'overlay_trigger';
129 + $wp_customize->add_setting(
130 + $id,
131 + array(
132 + 'default' => Options::DEFAULT_OVERLAY_TRIGGER,
133 + 'transport' => 'postMessage',
134 + 'type' => 'option',
135 + )
136 + );
137 + $wp_customize->add_control(
138 + $id,
139 + array(
140 + 'label' => __( 'Search Input Overlay Trigger', 'jetpack-search-pkg' ),
141 + 'description' => __( 'Select when your overlay should appear.', 'jetpack-search-pkg' ),
142 + 'section' => $section_id,
143 + 'type' => 'select',
144 + 'choices' => array(
145 + Options::OVERLAY_TRIGGER_SUBMIT => __( 'Open when user submits the form (recommended)', 'jetpack-search-pkg' ),
146 + Options::OVERLAY_TRIGGER_IMMEDIATE => __( 'Open when user starts typing', 'jetpack-search-pkg' ),
147 + ),
148 + )
149 + );
150 +
151 + $id = $setting_prefix . 'filtering_opens_overlay_settings';
152 + $wp_customize->add_setting(
153 + $id,
154 + array( 'type' => 'option' )
155 + );
156 + $wp_customize->add_control(
157 + new Label_Control(
158 + $wp_customize,
159 + $id,
160 + array(
161 + 'label' => __( 'Filtering Search Overlay', 'jetpack-search-pkg' ),
162 + 'description' => __( 'Open overlay when filters are used outside the Jetpack Sidebar', 'jetpack-search-pkg' ),
163 + 'section' => $section_id,
164 + )
165 + )
166 + );
167 +
168 + $id = $setting_prefix . 'filtering_opens_overlay';
169 + $wp_customize->add_setting(
170 + $id,
171 + array(
172 + 'default' => '1',
173 + 'sanitize_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value' ),
174 + 'sanitize_js_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value_for_js' ),
175 + 'transport' => 'postMessage',
176 + 'type' => 'option',
177 + )
178 + );
179 + $wp_customize->add_control(
180 + $id,
181 + array(
182 + 'type' => 'checkbox',
183 + 'section' => $section_id,
184 + 'label' => __( 'Open overlay from filter links', 'jetpack-search-pkg' ),
185 + )
186 + );
187 +
188 + $id = $setting_prefix . 'excluded_post_types';
189 + $wp_customize->add_setting(
190 + $id,
191 + array(
192 + 'default' => '',
193 + 'type' => 'option',
194 + )
195 + );
196 + $wp_customize->add_control(
197 + new Excluded_Post_Types_Control(
198 + $wp_customize,
199 + $id,
200 + array(
201 + 'description' => __( 'Choose post types to exclude from search results. You must leave at least one post type unchecked.', 'jetpack-search-pkg' ),
202 + 'label' => __( 'Excluded Post Types', 'jetpack-search-pkg' ),
203 + 'section' => $section_id,
204 + )
205 + )
206 + );
207 +
208 + $id = $setting_prefix . 'highlight_color';
209 + $wp_customize->add_setting(
210 + $id,
211 + array(
212 + 'default' => '#FFC',
213 + 'transport' => 'postMessage',
214 + 'type' => 'option',
215 + )
216 + );
217 + $wp_customize->add_control(
218 + new WP_Customize_Color_Control(
219 + $wp_customize,
220 + $id,
221 + array(
222 + 'label' => __( 'Highlight Search Terms', 'jetpack-search-pkg' ),
223 + 'description' => __( 'Choose a color to highlight matching search terms.', 'jetpack-search-pkg' ),
224 + 'section' => $section_id,
225 + )
226 + )
227 + );
228 +
229 + $id = $setting_prefix . 'additional_settings_placeholder';
230 + $wp_customize->add_setting(
231 + $id,
232 + array( 'type' => 'option' )
233 + );
234 + $wp_customize->add_control(
235 + new Label_Control(
236 + $wp_customize,
237 + $id,
238 + array(
239 + 'label' => __( 'Additional Jetpack Search Settings', 'jetpack-search-pkg' ),
240 + 'section' => $section_id,
241 + )
242 + )
243 + );
244 +
245 + $id = $setting_prefix . 'enable_sort';
246 + $wp_customize->add_setting(
247 + $id,
248 + array(
249 + 'default' => '1',
250 + 'sanitize_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value' ),
251 + 'sanitize_js_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value_for_js' ),
252 + 'transport' => 'postMessage',
253 + 'type' => 'option',
254 + )
255 + );
256 + $wp_customize->add_control(
257 + $id,
258 + array(
259 + 'label' => __( 'Show sort selector', 'jetpack-search-pkg' ),
260 + 'section' => $section_id,
261 + 'type' => 'checkbox',
262 + )
263 + );
264 +
265 + $id = $setting_prefix . 'inf_scroll';
266 + $wp_customize->add_setting(
267 + $id,
268 + array(
269 + 'default' => '1',
270 + 'sanitize_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value' ),
271 + 'sanitize_js_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value_for_js' ),
272 + 'transport' => 'postMessage',
273 + 'type' => 'option',
274 + )
275 + );
276 + $wp_customize->add_control(
277 + $id,
278 + array(
279 + 'type' => 'checkbox',
280 + 'section' => $section_id,
281 + 'label' => __( 'Enable infinite scrolling', 'jetpack-search-pkg' ),
282 + )
283 + );
284 +
285 + $id = $setting_prefix . 'show_post_date';
286 + $wp_customize->add_setting(
287 + $id,
288 + array(
289 + 'default' => '1',
290 + 'sanitize_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value' ),
291 + 'sanitize_js_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value_for_js' ),
292 + 'transport' => 'postMessage',
293 + 'type' => 'option',
294 + )
295 + );
296 + $wp_customize->add_control(
297 + $id,
298 + array(
299 + 'type' => 'checkbox',
300 + 'section' => $section_id,
301 + 'label' => __( 'Show post date', 'jetpack-search-pkg' ),
302 + )
303 + );
304 +
305 + $id = $setting_prefix . 'show_product_price';
306 + $wp_customize->add_setting(
307 + $id,
308 + array(
309 + 'default' => '1',
310 + 'sanitize_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value' ),
311 + 'sanitize_js_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value_for_js' ),
312 + 'transport' => 'postMessage',
313 + 'type' => 'option',
314 + )
315 + );
316 + $wp_customize->add_control(
317 + $id,
318 + array(
319 + 'type' => 'checkbox',
320 + 'section' => $section_id,
321 + 'label' => __( 'Show price', 'jetpack-search-pkg' ),
322 + )
323 + );
324 +
325 + $id = $setting_prefix . 'show_powered_by';
326 + $wp_customize->add_setting(
327 + $id,
328 + array(
329 + 'default' => '1',
330 + 'sanitize_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value' ),
331 + 'sanitize_js_callback' => array( 'Automattic\Jetpack\Search\Helper', 'sanitize_checkbox_value_for_js' ),
332 + 'transport' => 'postMessage',
333 + 'type' => 'option',
334 + )
335 + );
336 +
337 + if ( ! $this->plan->is_free_plan() ) {
338 + $wp_customize->add_control(
339 + $id,
340 + array(
341 + 'type' => 'checkbox',
342 + 'section' => $section_id,
343 + 'label' => __( 'Display "Powered by Jetpack"', 'jetpack-search-pkg' ),
344 + )
345 + );
346 + }
347 + }
348 +
349 + /**
350 + * Enqueue assets for Customizer controls.
351 + */
352 + public function customize_controls_enqueue_scripts() {
353 + Assets::register_script(
354 + 'jetpack-instant-search-customizer',
355 + 'customize-controls/customize-controls.js',
356 + __FILE__,
357 + array(
358 + 'css_path' => 'customize-controls/customize-controls.css',
359 + 'dependencies' => array( 'customize-controls' ),
360 + 'in_footer' => true,
361 + 'textdomain' => 'jetpack-search-pkg',
362 + )
363 + );
364 + Assets::enqueue_script( 'jetpack-instant-search-customizer' );
365 + }
366 +}