PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.2
Jetpack – WP Security, Backup, Speed, & Growth v16.2
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 13.7.2 13.8.3 All 506 releases
jetpack / jetpack_vendor / automattic / jetpack-search / src / customizer / class-customizer.php

class-customizer.php in Jetpack – WP Security, Backup, Speed, & Growth 16.2, at jetpack_vendor/automattic/jetpack-search/src/customizer/class-customizer.php

367 lines 10.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
367