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-sync/src/modules/class-search.php +1922 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,1922 @@
1 +<?php
2 +/**
3 + * Configuration lists for Jetpack Search Fields
4 + *
5 + * Post Meta: list of post meta keys that are available in the index
6 + * and how they are configured.
7 + *
8 + * Custom Taxonomy: list of custom taxonomies that are indexed.
9 + *
10 + * The reason we need an allowed list is that Elasticsearch runs into scaling problems
11 + * with more than 200k-ish total fields. The barrier to adding new fields is low,
12 + * just open a PR.
13 + *
14 + * Although the comments indicate specific plugins, you don't need to be running
15 + * that plugin for the indexing to work. The metakey just has to match.
16 + *
17 + * If you need a new meta key or taxonomy also consider using:
18 + * jetpack-search-meta0 - jetpack-search-meta9
19 + * jetpack-search-tag0 - jetpack-search-tag9
20 + *
21 + * @package automattic/jetpack-sync
22 + */
23 +
24 +namespace Automattic\Jetpack\Sync\Modules;
25 +
26 +use Automattic\Jetpack\Search\AI_Answers;
27 +
28 +if ( ! defined( 'ABSPATH' ) ) {
29 + exit( 0 );
30 +}
31 +
32 +/**
33 + * Class to handle sync for Jetpack Search.
34 + */
35 +class Search extends Module {
36 +
37 + /**
38 + * Sync module name.
39 + *
40 + * @access public
41 + *
42 + * @return string
43 + */
44 + public function name() {
45 + return 'search';
46 + }
47 +
48 + /**
49 + * Constructor.
50 + */
51 + public function __construct() {
52 + // Post meta whitelists.
53 + add_filter( 'jetpack_sync_post_meta_whitelist', array( $this, 'add_search_post_meta_whitelist' ), 10 );
54 + // Add options
55 + add_filter( 'jetpack_sync_options_whitelist', array( $this, 'add_search_options_whitelist' ), 10 );
56 + // AI Answers CPTs and post meta (gated by feature flag).
57 + add_filter( 'jetpack_sync_post_types_whitelist', array( $this, 'add_ai_answer_post_types' ), 10 );
58 + }
59 +
60 + /**
61 + * Post meta search specification.
62 + *
63 + * We sync and index all meta keys in this list. Additionally there are a few
64 + * options.
65 + *
66 + * 'metakey' => [ 'searchable_in_all_content' => true ],
67 + * Field will be included in the all_content fields
68 + *
69 + * 'metakey' => [ 'available' => false, 'alternatives' => [ 'metakey_processed' ] ],
70 + * Field not in meta.* but has data in an alternative field(s) name that
71 + * should work similarly. For instance, woocommerce total_sales does not go into
72 + * the index, but the percentage of sales does.
73 + *
74 + * @static
75 + * @access private
76 + * @var array
77 + */
78 + private static $postmeta_to_sync = array(
79 + // jetpack.
80 + '_guideline_block_jetpack_search-ai-summary' => array(), // AI Answers personality (Gutenberg Guidelines CPT).
81 + 'jetpack-search-meta0' => array( 'searchable_in_all_content' => true ),
82 + 'jetpack-search-meta1' => array( 'searchable_in_all_content' => true ),
83 + 'jetpack-search-meta2' => array( 'searchable_in_all_content' => true ),
84 + 'jetpack-search-meta3' => array( 'searchable_in_all_content' => true ),
85 + 'jetpack-search-meta4' => array( 'searchable_in_all_content' => true ),
86 + 'jetpack-search-meta5' => array( 'searchable_in_all_content' => true ),
87 + 'jetpack-search-meta6' => array( 'searchable_in_all_content' => true ),
88 + 'jetpack-search-meta7' => array( 'searchable_in_all_content' => true ),
89 + 'jetpack-search-meta8' => array( 'searchable_in_all_content' => true ),
90 + 'jetpack-search-meta9' => array( 'searchable_in_all_content' => true ),
91 +
92 + // woocommerce.
93 + 'exclude_product_categories' => array(),
94 + 'exclude_product_ids' => array(),
95 + 'free_shipping' => array(),
96 + 'id_field' => array(),
97 + 'individual_use' => array(),
98 + 'limit_usage_to_x_items' => array(),
99 + 'maximum_amount' => array(),
100 + 'minimum_amount' => array(),
101 + 'post_id' => array(),
102 + 'product_categories' => array( 'searchable_in_all_content' => true ),
103 + 'product_ids' => array(),
104 + 'total_sales' => array(
105 + 'available' => false,
106 + 'alternatives' => array(
107 + 'wc.percent_of_sales',
108 + ),
109 + ),
110 + 'usage_limit' => array(),
111 + 'usage_limit_per_user' => array(),
112 + '_crosssell_ids' => array(),
113 + '_downloadable' => array(),
114 + '_featured' => array(),
115 + '_height' => array(),
116 + '_length' => array(),
117 + '_price' => array(
118 + 'alternatives' => array(
119 + 'wc.price',
120 + 'wc.min_price',
121 + 'wc.max_price',
122 + ),
123 + ),
124 + '_prices_include_tax' => array(),
125 + '_product_attributes' => array(),
126 + '_product_version' => array(),
127 + '_regular_price' => array(
128 + 'alternatives' => array(
129 + 'wc.regular_price',
130 + ),
131 + ),
132 + '_sale_price' => array(
133 + 'alternatives' => array(
134 + 'wc.sale_price',
135 + ),
136 + ),
137 + '_sale_price_dates_from' => array(),
138 + '_sale_price_dates_to' => array(),
139 + '_sku' => array( 'searchable_in_all_content' => true ),
140 + '_stock_status' => array(),
141 + '_wc_average_rating' => array(
142 + 'alternatives' => array(
143 + 'wc.ave_rating_score',
144 + ),
145 + ),
146 + '_wc_rating_count' => array(
147 + 'alternatives' => array(
148 + 'wc.rating', // wc.rating.count_1, wc.rating.count_2, ...
149 + ),
150 + ),
151 + '_wc_review_count' => array(),
152 + '_weight' => array(),
153 + '_width' => array(),
154 +
155 + // co-authors plus.
156 + 'cap-description' => array( 'searchable_in_all_content' => true ),
157 + 'cap-user_login' => array( 'searchable_in_all_content' => true ),
158 + 'cap-user_email' => array(),
159 + 'cap-last_name' => array( 'searchable_in_all_content' => true ),
160 + 'cap-first_name' => array( 'searchable_in_all_content' => true ),
161 + 'cap-display_name' => array( 'searchable_in_all_content' => true ),
162 + 'cap-website' => array(),
163 + 'cap-jabber' => array(),
164 + 'cap-aim' => array(),
165 + 'cap-twitter' => array(),
166 + 'cap-facebook' => array(),
167 + 'cap-google_plus' => array(),
168 + 'cap-job_title' => array( 'searchable_in_all_content' => true ),
169 +
170 + // bbpress.
171 + 'bbpl_like' => array(),
172 + 'bbpress_discussion_comments_copied' => array(),
173 + 'bbpress_discussion_tags_copied' => array(),
174 + 'bbpress_discussion_topic_id' => array(),
175 + 'bbpress_discussion_use_defaults' => array(),
176 + 'bbpress_page_header_bg' => array(),
177 + 'bbpress_title_bg' => array(),
178 + 'use_bbpress_discussion_topic' => array(),
179 +
180 + // wpml.
181 + 'tm_meta_wpml' => array(),
182 + 'wpml_language' => array(),
183 + 'wpml_media_lang' => array(),
184 + 'wpml_media_processed' => array(),
185 +
186 + // blogger import.
187 + 'blogger_author' => array( 'searchable_in_all_content' => true ),
188 + 'blogger_blog' => array( 'searchable_in_all_content' => true ),
189 + 'blogger_permalink' => array( 'searchable_in_all_content' => true ),
190 +
191 + // geo.
192 + 'geo_address' => array( 'searchable_in_all_content' => true ),
193 + 'geo_latitude' => array(),
194 + 'geo_longitude' => array(),
195 + 'geo_public' => array(),
196 + 'geolocated' => array(),
197 + 'geolocation_city' => array( 'searchable_in_all_content' => true ),
198 + 'geolocation_country_long' => array( 'searchable_in_all_content' => true ),
199 + 'geolocation_country_short' => array( 'searchable_in_all_content' => true ),
200 + 'geolocation_formatted_address' => array( 'searchable_in_all_content' => true ),
201 + 'geolocation_lat' => array(),
202 + 'geolocation_long' => array(),
203 + 'geolocation_postcode' => array( 'searchable_in_all_content' => true ),
204 + 'geolocation_state_long' => array( 'searchable_in_all_content' => true ),
205 + 'geolocation_state_short' => array( 'searchable_in_all_content' => true ),
206 +
207 + // wp-ultimate-recipe.
208 + 'recipe_alternate_image' => array(),
209 + 'recipe_cook_time' => array(),
210 + 'recipe_cook_time_text' => array(),
211 + 'recipe_description' => array( 'searchable_in_all_content' => true ),
212 + 'recipe_ingredients' => array( 'searchable_in_all_content' => true ),
213 + 'recipe_instructions' => array( 'searchable_in_all_content' => true ),
214 + 'recipe_notes' => array( 'searchable_in_all_content' => true ),
215 + 'recipe_nutritional' => array( 'searchable_in_all_content' => true ),
216 + 'recipe_passive_time' => array(),
217 + 'recipe_passive_time_text' => array(),
218 + 'recipe_prep_time' => array(),
219 + 'recipe_prep_time_text' => array(),
220 + 'recipe_rating' => array(),
221 + 'recipe_servings' => array(),
222 + 'recipe_servings_normalized' => array(),
223 + 'recipe_servings_type' => array(),
224 + 'recipe_terms' => array( 'searchable_in_all_content' => true ),
225 + 'recipe_terms_with_parents' => array(),
226 + 'recipe_title' => array( 'searchable_in_all_content' => true ),
227 + 'recipe_user_ratings' => array(),
228 + 'recipe_user_ratings_rating' => array(),
229 +
230 + // generic fields.
231 + // from advanced-custom-fields and metabox.io .
232 + 'Link' => array(),
233 + 'Location' => array(),
234 + 'Title' => array( 'searchable_in_all_content' => true ),
235 + 'ad_code' => array(),
236 + 'address' => array(),
237 + 'admin_mail' => array(),
238 + 'admin_only' => array(),
239 + 'advertisers' => array( 'searchable_in_all_content' => true ),
240 + 'age' => array(),
241 + 'aliases' => array(),
242 + 'alternate_title' => array(),
243 + 'ama_content' => array(),
244 + 'amazon' => array(),
245 + 'answer' => array( 'searchable_in_all_content' => true ),
246 + 'area' => array(),
247 + 'attention' => array(),
248 + 'attr' => array(),
249 + 'author' => array( 'searchable_in_all_content' => true ),
250 + 'author_name' => array( 'searchable_in_all_content' => true ),
251 + 'blog' => array(),
252 + 'blog_id' => array(),
253 + 'call_to_action' => array(),
254 + 'campaign_preview' => array(),
255 + 'canonical_url' => array(),
256 + 'catch_text' => array(),
257 + 'category' => array( 'searchable_in_all_content' => true ),
258 + 'classificacao' => array(),
259 + 'classification' => array(),
260 + 'code' => array(),
261 + 'codigo' => array(),
262 + 'company' => array( 'searchable_in_all_content' => true ),
263 + 'company_website' => array(),
264 + 'config' => array(),
265 + 'construction' => array(),
266 + 'container_ids' => array(),
267 + 'content' => array( 'searchable_in_all_content' => true ),
268 + 'content_body-full_content' => array( 'searchable_in_all_content' => true ),
269 + 'copyright' => array(),
270 + 'custom_page_title' => array( 'searchable_in_all_content' => true ),
271 + 'custom_permalink' => array(),
272 + 'customize' => array(),
273 + 'data' => array(),
274 + 'date' => array(),
275 + 'day' => array(),
276 + 'descripcion' => array( 'searchable_in_all_content' => true ),
277 + 'description' => array( 'searchable_in_all_content' => true ),
278 + 'display_settings' => array(),
279 + 'display_type' => array(),
280 + 'duration' => array(),
281 + 'embed' => array(),
282 + 'entity_ids' => array(),
283 + 'entity_types' => array(),
284 + 'event_subtitle' => array( 'searchable_in_all_content' => true ),
285 + 'excluded_container_ids' => array(),
286 + 'exclusions' => array(),
287 + 'experience' => array(),
288 + 'external_url' => array(),
289 + 'featured' => array(),
290 + 'featured_image' => array(),
291 + 'featured_post' => array(),
292 + 'featured_story' => array(),
293 + 'fee' => array(),
294 + 'filter' => array(),
295 + 'follow' => array(),
296 + 'footer_text' => array(),
297 + 'from_header' => array(),
298 + 'fullscreen_view' => array(),
299 + 'gallery' => array(),
300 + 'genre' => array( 'searchable_in_all_content' => true ),
301 + 'guest_bio' => array(),
302 + 'guest_name' => array(),
303 + 'guests' => array( 'searchable_in_all_content' => true ),
304 + 'has_variations' => array(),
305 + 'hashtag' => array(),
306 + 'header_image' => array(),
307 + 'hidden_from_ui' => array(),
308 + 'hide_on_screen' => array(),
309 + 'homepage_order' => array(),
310 + 'hours' => array(),
311 + 'i18n' => array(),
312 + 'id' => array(),
313 + 'image' => array(),
314 + 'image_size' => array(),
315 + 'image_source' => array(),
316 + 'index' => array(),
317 + 'intro_text' => array( 'searchable_in_all_content' => true ),
318 + 'job_mention' => array( 'searchable_in_all_content' => true ),
319 + 'keywords' => array( 'searchable_in_all_content' => true ),
320 + 'latest_news' => array(),
321 + 'layout' => array(),
322 + 'link' => array(),
323 + 'link_dump' => array( 'searchable_in_all_content' => true ),
324 + 'link_url' => array(),
325 + 'location' => array(),
326 + 'logo' => array(),
327 + 'main_title' => array( 'searchable_in_all_content' => true ),
328 + 'maximum_entity_count' => array(),
329 + 'media' => array(),
330 + 'mentions' => array(),
331 + 'messages' => array(),
332 + 'meta_description' => array( 'searchable_in_all_content' => true ),
333 + 'meta_id' => array(),
334 + 'meta_index' => array(),
335 + 'meta_key' => array(),
336 + 'meta_value' => array(),
337 + 'modal-dialog-id' => array(),
338 + 'name' => array( 'searchable_in_all_content' => true ),
339 + 'nombre' => array( 'searchable_in_all_content' => true ),
340 + 'notes' => array( 'searchable_in_all_content' => true ),
341 + 'options' => array(),
342 + 'order_by' => array(),
343 + 'order_direction' => array(),
344 + 'original_cats' => array(),
345 + 'original_headers' => array(),
346 + 'original_link' => array(),
347 + 'original_message' => array(),
348 + 'original_subject' => array(),
349 + 'original_title' => array(),
350 + 'original_to' => array(),
351 + 'other_setting' => array(),
352 + 'page_canonical' => array(),
353 + 'page_layout' => array(),
354 + 'page_sidebar' => array(),
355 + 'page_tags' => array(),
356 + 'panels_data' => array(),
357 + 'parking' => array(),
358 + 'pdf_upload' => array(),
359 + 'people_mentioned' => array(),
360 + 'photo' => array(),
361 + 'play_time' => array(),
362 + 'position' => array(),
363 + 'post-rating' => array(),
364 + 'post_background' => array(),
365 + 'post_color' => array(),
366 + 'post_sidebar' => array(),
367 + 'post_subtitle' => array( 'searchable_in_all_content' => true ),
368 + 'price' => array(),
369 + 'publication' => array(),
370 + 'rating' => array(),
371 + 'ratings_average' => array(),
372 + 'ratings_score' => array(),
373 + 'ratings_users' => array(),
374 + 'relation' => array(),
375 + 'reply_to_header' => array(),
376 + 'required' => array(),
377 + 'returns' => array(),
378 + 'review_post' => array(),
379 + 'rule' => array(),
380 + 'section' => array( 'searchable_in_all_content' => true ),
381 + 'selected_links' => array(),
382 + 'session_transcript' => array(),
383 + 'settings' => array(),
384 + 'sex' => array(),
385 + 'shares_count' => array(),
386 + 'show_description' => array( 'searchable_in_all_content' => true ),
387 + 'show_page_title' => array(),
388 + 'show_notes' => array(),
389 + 'show_notes_preview' => array(),
390 + 'side' => array(),
391 + 'sidebar' => array(),
392 + 'site' => array(),
393 + 'situation' => array(),
394 + 'slide_template' => array(),
395 + 'slug' => array(),
396 + 'sortorder' => array(),
397 + 'source' => array(),
398 + 'start_date' => array(),
399 + 'status' => array(),
400 + 'styles' => array(),
401 + 'subtitle' => array( 'searchable_in_all_content' => true ),
402 + 'subtitulo' => array(),
403 + 'success' => array(),
404 + 'summary' => array( 'searchable_in_all_content' => true ),
405 + 'synopsis' => array( 'searchable_in_all_content' => true ),
406 + 'tel' => array(),
407 + 'tema' => array(),
408 + 'testimonial' => array(),
409 + 'testimonial_author' => array(),
410 + 'text_already_subscribed' => array(),
411 + 'text_error' => array(),
412 + 'text_invalid_email' => array(),
413 + 'text_not_subscribed' => array(),
414 + 'text_required_field_missing' => array(),
415 + 'text_subscribed' => array(),
416 + 'text_unsubscribed' => array(),
417 + 'thumbnail' => array(),
418 + 'time' => array(),
419 + 'time_jump_list' => array( 'searchable_in_all_content' => true ),
420 + 'title' => array( 'searchable_in_all_content' => true ),
421 + 'title_view' => array(),
422 + 'titre' => array( 'searchable_in_all_content' => true ),
423 + 'titulo' => array( 'searchable_in_all_content' => true ),
424 + 'to_header' => array(),
425 + 'toc' => array(),
426 + 'transcript' => array( 'searchable_in_all_content' => true ),
427 + 'transport_uri' => array(),
428 + 'type' => array(),
429 + 'url' => array(),
430 + 'validation' => array(),
431 + 'value' => array(),
432 + 'values' => array(),
433 + 'variation' => array(),
434 + 'video' => array(),
435 + 'video_type' => array(),
436 + 'video_url' => array(),
437 + 'videopress_guid' => array(),
438 + 'website' => array(),
439 + 'weight' => array(),
440 + 'year' => array(),
441 +
442 + // wp.com martketplace search - @see https://wp.me/pdh6GB-Ax#comment-2104
443 + '_app_icon' => array(),
444 + '_featured_product_video' => array(),
445 + 'wpcom_marketplace_org_slug' => array(),
446 + '_wc_general_product_dependency_theme' => array(),
447 + '_wc_general_product_dependency_plugin' => array(),
448 + 'wpcom_marketplace_product_extra_fields' => array(),
449 + 'wccom_product_search_keywords' => array( 'searchable_in_all_content' => true ),
450 + '_wccom_product_faqs' => array( 'searchable_in_all_content' => true ),
451 + 'wccom_product_features' => array( 'searchable_in_all_content' => true ),
452 + 'wccom_product_compatibility' => array( 'searchable_in_all_content' => true ),
453 +
454 + ); // end indexed post meta.
455 +
456 + /**
457 + * Postmeta being considered for indexing
458 + * but currently not in the index
459 + * this list is really only for documentation.
460 + *
461 + * @static
462 + * @access private
463 + * @var array
464 + */
465 + private static $unindexed_postmeta = array(
466 +
467 + // Core.
468 + '_wp_attached_file' => array(),
469 + '_wp_attachment_context' => array(),
470 + '_wp_attachment_image_alt' => array(),
471 + '_wp_attachment_is_custom_header' => array(),
472 + '_wp_attachment_metadata' => array(),
473 + '_wp_desired_post_slug' => array(),
474 + '_wp_old_date' => array(),
475 + '_wp_old_slug' => array(),
476 + '_wp_page_template' => array(),
477 +
478 + // WooCommerce products.
479 + // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-product-data-store-cpt.php#L21 .
480 + '_backorders' => array(),
481 + '_default_attributes' => array(),
482 + '_download_expiry' => array(),
483 + '_download_limit' => array(),
484 + '_download_permissions_granted' => array(),
485 + '_downloadable_files' => array(),
486 + '_file_paths' => array(),
487 + '_manage_stock' => array(),
488 + '_product_image_gallery' => array(),
489 + '_purchase_note' => array(),
490 + '_recorded_sales' => array(),
491 + '_sold_individually' => array(),
492 + '_stock' => array(),
493 + '_tax_class' => array(),
494 + '_tax_status' => array(),
495 + '_thumbnail_id' => array(),
496 + '_upsell_ids' => array(),
497 + '_variation_description' => array(),
498 + '_virtual' => array(),
499 + '_visibility' => array(),
500 + 'coupon_amount' => array(),
501 + 'default_source' => array(),
502 + 'discount_type' => array(),
503 + 'exclude_sale_items' => array(),
504 + 'expiry_date' => array(),
505 +
506 + // Woocommerce orders and refunds.
507 + // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-order-data-store-cpt.php#L27 .
508 + // See https://github.com/woocommerce/woocommerce/blob/b8a2815ae546c836467008739e7ff5150cb08e93/includes/data-stores/class-wc-order-refund-data-store-cpt.php#L20 .
509 + '_billing_address_1' => array(),
510 + '_billing_address_2' => array(),
511 + '_billing_address_index' => array(),
512 + '_billing_city' => array(),
513 + '_billing_company' => array(),
514 + '_billing_country' => array(),
515 + '_billing_email' => array(),
516 + '_billing_first_name' => array(),
517 + '_billing_last_name' => array(),
518 + '_billing_phone' => array(),
519 + '_billing_postcode' => array(),
520 + '_billing_state' => array(),
521 + '_cart_discount' => array(),
522 + '_cart_discount_tax' => array(),
523 + '_completed_date' => array(),
524 + '_created_via' => array(),
525 + '_customer_ip_address' => array(),
526 + '_customer_user_agent' => array(),
527 + '_date_completed' => array(),
528 + '_date_paid' => array(),
529 + '_order_currency' => array(),
530 + '_order_key' => array(),
531 + '_order_shipping' => array(),
532 + '_order_shipping_tax' => array(),
533 + '_order_stock_reduced' => array(),
534 + '_order_tax' => array(),
535 + '_order_total' => array(),
536 + '_order_version' => array(),
537 + '_paid_date' => array(),
538 + '_payment_method' => array(),
539 + '_payment_method_title' => array(),
540 + '_payment_tokens' => array(),
541 + '_recorded_coupon_usage_counts' => array(),
542 + '_refund_amount' => array(),
543 + '_refund_reason' => array(),
544 + '_refunded_by' => array(),
545 + '_shipping_address_1' => array(),
546 + '_shipping_address_2' => array(),
547 + '_shipping_address_index' => array(),
548 + '_shipping_city' => array(),
549 + '_shipping_company' => array(),
550 + '_shipping_country' => array(),
551 + '_shipping_first_name' => array(),
552 + '_shipping_last_name' => array(),
553 + '_shipping_postcode' => array(),
554 + '_shipping_state' => array(),
555 + '_transaction_id' => array(),
556 +
557 + // aioseop.
558 + '_aioseop_description' => array(),
559 + '_aioseop_keywords' => array(),
560 + '_aioseop_title' => array(),
561 +
562 + // yoast.
563 + '_yoast_wpseo_authorship' => array(),
564 + '_yoast_wpseo_bctitle' => array(),
565 + '_yoast_wpseo_canonical' => array(),
566 + '_yoast_wpseo_content_score' => array(),
567 + '_yoast_wpseo_focuskw' => array(),
568 + '_yoast_wpseo_focuskw_text_input' => array(),
569 + '_yoast_wpseo_google-plus-description' => array(),
570 + '_yoast_wpseo_google-plus-image' => array(),
571 + '_yoast_wpseo_linkdex' => array(),
572 + '_yoast_wpseo_meta-robots-adv' => array(),
573 + '_yoast_wpseo_meta-robots-nofollow' => array(),
574 + '_yoast_wpseo_meta-robots-noindex' => array(),
575 + '_yoast_wpseo_metadesc' => array(),
576 + '_yoast_wpseo_metakeywords' => array(),
577 + '_yoast_wpseo_opengraph-description' => array(),
578 + '_yoast_wpseo_opengraph-image' => array(),
579 + '_yoast_wpseo_opengraph-title' => array(),
580 + '_yoast_wpseo_primary_byline' => array(),
581 + '_yoast_wpseo_primary_category' => array(),
582 + '_yoast_wpseo_primary_product_cat' => array(),
583 + '_yoast_wpseo_primary_sponsor-type' => array(),
584 + '_yoast_wpseo_primary_tema_category' => array(),
585 + '_yoast_wpseo_primary_wpdmcategory' => array(),
586 + '_yoast_wpseo_primary_wt_portfolio_category' => array(),
587 + '_yoast_wpseo_redirect' => array(),
588 + '_yoast_wpseo_sitemap-include' => array(),
589 + '_yoast_wpseo_sitemap-prio' => array(),
590 + '_yoast_wpseo_title' => array(),
591 + '_yoast_wpseo_twitter-description' => array(),
592 + '_yoast_wpseo_twitter-image' => array(),
593 +
594 + // bbpress.
595 + 'bbppu_read_by' => array(),
596 + '_bbp_activity_id' => array(),
597 + '_bbp_attachment' => array(),
598 + '_bbp_attachment_upload_error' => array(),
599 + '_bbp_forum_id' => array(),
600 + '_bbp_forum_parent_id' => array(),
601 + '_bbp_forum_subforum_count' => array(),
602 + '_bbp_forum_type' => array(),
603 + '_bbp_group_ids' => array(),
604 + '_bbp_last_active_id' => array(),
605 + '_bbp_last_active_time' => array(),
606 + '_bbp_last_reply_id' => array(),
607 + '_bbp_last_topic_id' => array(),
608 + '_bbp_old_forum_id' => array(),
609 + '_bbp_old_sticky_status' => array(),
610 + '_bbp_old_topic_id' => array(),
611 + '_bbp_post_id' => array(),
612 + '_bbp_reply_count' => array(),
613 + '_bbp_reply_is_private' => array(),
614 + '_bbp_reply_to' => array(),
615 + '_bbp_revision_log' => array(),
616 + '_bbp_status' => array(),
617 + '_bbp_sticky_topics' => array(),
618 + '_bbp_topic_count' => array(),
619 + '_bbp_topic_id' => array(),
620 + '_bbp_total_reply_count' => array(),
621 + '_bbp_total_topic_count' => array(),
622 + '_bbp_voice_count' => array(),
623 +
624 + // ???
625 + '_locale' => array(),
626 +
627 + // wp-job-manager.
628 + '_job_title' => array(),
629 + '_job_description' => array(),
630 +
631 + // wpml.
632 + '_wpml_media_duplicate' => array(),
633 + '_wpml_media_featured' => array(),
634 +
635 + // generic fields.
636 + 'ad_clicks_count' => array(),
637 + 'email' => array(),
638 + 'usage_count' => array(),
639 + 'user_mail' => array(),
640 + 'views' => array(),
641 + '_EventAllDay' => array(),
642 + '_EventCost' => array(),
643 + '_EventCurrencyPosition' => array(),
644 + '_EventCurrencySymbol' => array(),
645 + '_EventDuration' => array(),
646 + '_EventEndDate' => array(),
647 + '_EventEndDateUTC' => array(),
648 + '_EventOrganizerID' => array(),
649 + '_EventOrigin' => array(),
650 + '_EventShowMap' => array(),
651 + '_EventShowMapLink' => array(),
652 + '_EventStartDate' => array(),
653 + '_EventStartDateUTC' => array(),
654 + '_EventTimezone' => array(),
655 + '_EventTimezoneAbbr' => array(),
656 + '_EventURL' => array(),
657 + '_EventVenueID' => array(),
658 + '_OrganizerEmail' => array(),
659 + '_OrganizerOrganizer' => array(),
660 + '_OrganizerOrigin' => array(),
661 + '_OrganizerPhone' => array(),
662 + '_OrganizerWebsite' => array(),
663 + '_VenueAddress' => array(),
664 + '_VenueCity' => array(),
665 + '_VenueCountry' => array(),
666 + '_VenueOrigin' => array(),
667 + '_VenuePhone' => array(),
668 + '_VenueProvince' => array(),
669 + '_VenueShowMap' => array(),
670 + '_VenueShowMapLink' => array(),
671 + '_VenueState' => array(),
672 + '_VenueStateProvince' => array(),
673 + '_VenueURL' => array(),
674 + '_VenueVenue' => array(),
675 + '_VenueVenueID' => array(),
676 + '_VenueZip' => array(),
677 + '_description' => array(),
678 + '_edit_last' => array(),
679 + '_feedback_all_fields' => array(),
680 + '_feedback_author' => array(),
681 + '_feedback_author_email' => array(),
682 + '_feedback_author_url' => array(),
683 + '_feedback_contact_form_url' => array(),
684 + '_feedback_ip' => array(),
685 + '_feedback_subject' => array(),
686 + '_layout' => array(),
687 + '_links_to' => array(),
688 + '_links_to_target' => array(),
689 + '_mail' => array(),
690 + '_mail_2' => array(),
691 + '_messages' => array(),
692 + '_numero' => array(),
693 + '_post_restored_from' => array(),
694 + '_video_url' => array(),
695 + '_website' => array(),
696 +
697 + ); // end unindexed post meta.
698 +
699 + /**
700 + * List of indexed taxonomy slugs - VARCHAR(32)
701 + *
702 + * @access private
703 + * @static
704 + *
705 + * @var array
706 + */
707 + private static $taxonomies_to_sync = array(
708 +
709 + // Core.
710 + 'link_category',
711 + 'nav_menu',
712 + 'post_format', // Special, limited to certain values.
713 +
714 + // bbpress.
715 + 'topic',
716 + 'topic-tag',
717 + 'topics',
718 +
719 + // buddypress.
720 + 'bp-email-type',
721 + 'bp-email-type',
722 + 'bp_docs_access',
723 + 'bp_docs_associated_item',
724 + 'bp_docs_comment_access',
725 + 'bp_docs_doc_in_folder',
726 + 'bp_docs_folder_in_group',
727 + 'bp_docs_tag',
728 + 'bp_member_type',
729 +
730 + // co-authors plus.
731 + 'author',
732 +
733 + // events calendar plus.
734 + // the events calendar.
735 + 'event-categories',
736 + 'event-category',
737 + 'event-tag',
738 + 'event-tags',
739 + 'event-type',
740 + 'event-venue',
741 + 'event_category',
742 + 'event_location',
743 + 'event_organizer',
744 + 'event_tag',
745 + 'event_type',
746 + 'event_type_2',
747 + 'event_users',
748 + 'events_categories',
749 + 'events_category',
750 + 'events_feeds',
751 + 'events_tags',
752 + 'tribe_events_cat',
753 +
754 + // jetpack.
755 + 'jetpack-portfolio-tag',
756 + 'jetpack-portfolio-type',
757 + 'jetpack-search-tag0',
758 + 'jetpack-search-tag1',
759 + 'jetpack-search-tag2',
760 + 'jetpack-search-tag3',
761 + 'jetpack-search-tag4',
762 + 'jetpack-search-tag5',
763 + 'jetpack-search-tag6',
764 + 'jetpack-search-tag7',
765 + 'jetpack-search-tag8',
766 + 'jetpack-search-tag9',
767 +
768 + // nextgen gallery.
769 + 'ngg_tag',
770 +
771 + // polylang.
772 + // wpml.
773 + 'language',
774 + 'post_translations',
775 + 'term_language',
776 + 'term_translations',
777 + 'translation_priority',
778 +
779 + // woocommerce.
780 + 'documentation_category',
781 + 'pa_accessory-type',
782 + 'pa_actor',
783 + 'pa_age',
784 + 'pa_ambulance',
785 + 'pa_amount',
786 + 'pa_arm-roll',
787 + 'pa_aspectratio',
788 + 'pa_audiencerating',
789 + 'pa_author',
790 + 'pa_axle',
791 + 'pa_battery',
792 + 'pa_belakang',
793 + 'pa_binding',
794 + 'pa_body-type',
795 + 'pa_bore-x-stroke-mm',
796 + 'pa_box-cargo',
797 + 'pa_brakes',
798 + 'pa_brand',
799 + 'pa_brands',
800 + 'pa_bus',
801 + 'pa_c',
802 + 'pa_cabin-to-end',
803 + 'pa_capacity',
804 + 'pa_catalognumberlist',
805 + 'pa_ce-keurmerk',
806 + 'pa_chassis-front',
807 + 'pa_chassis-rear',
808 + 'pa_chassis-weight-kg',
809 + 'pa_chip-log',
810 + 'pa_clothing-size',
811 + 'pa_clutch',
812 + 'pa_clutch-type',
813 + 'pa_collection',
814 + 'pa_color',
815 + 'pa_colors',
816 + 'pa_colour',
817 + 'pa_compactor',
818 + 'pa_condition',
819 + 'pa_conditions-options',
820 + 'pa_cor',
821 + 'pa_couleur',
822 + 'pa_country',
823 + 'pa_countryregion-of-manufacture',
824 + 'pa_crane',
825 + 'pa_creator',
826 + 'pa_culoare',
827 + 'pa_customerpackagetype',
828 + 'pa_depan',
829 + 'pa_depan-belakang',
830 + 'pa_department',
831 + 'pa_design',
832 + 'pa_diameter',
833 + 'pa_diameter-cakram',
834 + 'pa_dimension-mm',
835 + 'pa_dimensions',
836 + 'pa_director',
837 + 'pa_disc-diameter',
838 + 'pa_drive-system',
839 + 'pa_dump',
840 + 'pa_ean',
841 + 'pa_eanlist',
842 + 'pa_edition',
843 + 'pa_electric-battery',
844 + 'pa_engine-model',
845 + 'pa_engine-size',
846 + 'pa_ethnicity',
847 + 'pa_exhaust-brake',
848 + 'pa_fabric',
849 + 'pa_farbe',
850 + 'pa_farg',
851 + 'pa_farge',
852 + 'pa_features',
853 + 'pa_final-gear-ratio',
854 + 'pa_finish',
855 + 'pa_fire-fighting',
856 + 'pa_fits',
857 + 'pa_flat-bed',
858 + 'pa_flavour',
859 + 'pa_format',
860 + 'pa_fragrance',
861 + 'pa_frame',
862 + 'pa_front',
863 + 'pa_front-overhang',
864 + 'pa_front-rear',
865 + 'pa_front-tread',
866 + 'pa_fuel-tank',
867 + 'pa_fuel-type',
868 + 'pa_garantie',
869 + 'pa_geadviseerd-accu-type',
870 + 'pa_gear-ratio',
871 + 'pa_gender',
872 + 'pa_genre',
873 + 'pa_gewicht-exclusief-accu',
874 + 'pa_gift-card-amount',
875 + 'pa_grade-ability-tan-o',
876 + 'pa_groesse',
877 + 'pa_gtin',
878 + 'pa_gvwr-gcwr',
879 + 'pa_hardwareplatform',
880 + 'pa_hazardousmaterialtype',
881 + 'pa_height',
882 + 'pa_hekmotor-of-boegmotor',
883 + 'pa_helmet-size',
884 + 'pa_hersteller',
885 + 'pa_high-blow-tank',
886 + 'pa_hoehe',
887 + 'pa_inhoud',
888 + 'pa_interchange-part-number',
889 + 'pa_isadultproduct',
890 + 'pa_isbn',
891 + 'pa_iseligiblefortradein',
892 + 'pa_itemdimensions',
893 + 'pa_itempartnumber',
894 + 'pa_kemudi-tipe',
895 + 'pa_kleur',
896 + 'pa_kopling-tipe',
897 + 'pa_label',
898 + 'pa_languages',
899 + 'pa_lbs',
900 + 'pa_legaldisclaimer',
901 + 'pa_lengte-aansluitkabel',
902 + 'pa_length',
903 + 'pa_liquid-tank',
904 + 'pa_location',
905 + 'pa_losse-motor-complete-set',
906 + 'pa_maat',
907 + 'pa_main-brake',
908 + 'pa_make',
909 + 'pa_manufacturer',
910 + 'pa_manufacturer-part-number',
911 + 'pa_manufacturermaximumage',
912 + 'pa_manufacturerminimumage',
913 + 'pa_manufacturerpartswarrantydesc',
914 + 'pa_masseinheit',
915 + 'pa_material',
916 + 'pa_mau-sac',
917 + 'pa_maximum-power-ps-rpm',
918 + 'pa_maximum-speed',
919 + 'pa_maximum-torque-kgm-rpm',
920 + 'pa_mediatype',
921 + 'pa_megethos',
922 + 'pa_merk',
923 + 'pa_metal-type',
924 + 'pa_min-turning-circle',
925 + 'pa_mixer',
926 + 'pa_model',
927 + 'pa_model-tipe',
928 + 'pa_model-type',
929 + 'pa_modelo',
930 + 'pa_mount',
931 + 'pa_mpn',
932 + 'pa_nicotine-strength',
933 + 'pa_nos-of-cylinder',
934 + 'pa_nos-of-tire',
935 + 'pa_numberofdiscs',
936 + 'pa_numberofitems',
937 + 'pa_numberofpages',
938 + 'pa_offset',
939 + 'pa_open-cargo',
940 + 'pa_operatingsystem',
941 + 'pa_options',
942 + 'pa_other-part-number',
943 + 'pa_overall-height',
944 + 'pa_overall-length',
945 + 'pa_overall-width',
946 + 'pa_overview',
947 + 'pa_packagedimensions',
948 + 'pa_packagequantity',
949 + 'pa_pages',
950 + 'pa_parking-brake',
951 + 'pa_part-number',
952 + 'pa_partnumber',
953 + 'pa_pattern',
954 + 'pa_pattern2',
955 + 'pa_performa',
956 + 'pa_pictureformat',
957 + 'pa_pin-size',
958 + 'pa_piston-displacement-cc',
959 + 'pa_ploshhad',
960 + 'pa_plug-type',
961 + 'pa_power',
962 + 'pa_product',
963 + 'pa_productgroup',
964 + 'pa_producttypename',
965 + 'pa_publicationdate',
966 + 'pa_publisher',
967 + 'pa_quantity',
968 + 'pa_rear',
969 + 'pa_rear-overhang',
970 + 'pa_rear-tread',
971 + 'pa_refrigerated-box',
972 + 'pa_region',
973 + 'pa_regioncode',
974 + 'pa_releasedate',
975 + 'pa_rem-parkir',
976 + 'pa_rem-pelambat',
977 + 'pa_rem-utama',
978 + 'pa_reverse',
979 + 'pa_runningtime',
980 + 'pa_scent',
981 + 'pa_schachtlengte',
982 + 'pa_seeds',
983 + 'pa_series',
984 + 'pa_setting',
985 + 'pa_sex',
986 + 'pa_shape',
987 + 'pa_shirt-size',
988 + 'pa_size',
989 + 'pa_sizes',
990 + 'pa_sku',
991 + 'pa_sky-lift',
992 + 'pa_sleeve-length',
993 + 'pa_snelheidsregeling',
994 + 'pa_staart',
995 + 'pa_steering',
996 + 'pa_steering-type',
997 + 'pa_storlek',
998 + 'pa_studio',
999 + 'pa_stuwkracht-lbs',
1000 + 'pa_style',
1001 + 'pa_suspensions',
1002 + 'pa_taille',
1003 + 'pa_talla',
1004 + 'pa_tamanho',
1005 + 'pa_tamano',
1006 + 'pa_taxi',
1007 + 'pa_ticket-type',
1008 + 'pa_tire-size',
1009 + 'pa_total-chassis-weight',
1010 + 'pa_towing-truck',
1011 + 'pa_tradeinvalue',
1012 + 'pa_trailer-t-head',
1013 + 'pa_transmisi-tipe',
1014 + 'pa_transmission',
1015 + 'pa_transmission-type',
1016 + 'pa_types',
1017 + 'pa_ukuran',
1018 + 'pa_upc',
1019 + 'pa_upclist',
1020 + 'pa_variation',
1021 + 'pa_vehicle-carrier',
1022 + 'pa_vergelijkbaar-stuwkracht',
1023 + 'pa_vermogen',
1024 + 'pa_voltage',
1025 + 'pa_volume',
1026 + 'pa_warranty',
1027 + 'pa_weight',
1028 + 'pa_wheel-base',
1029 + 'pa_wheel-configuration',
1030 + 'pa_wheel-disc-size',
1031 + 'pa_width',
1032 + 'pa_zout-water-geschikt',
1033 + 'product',
1034 + 'product-brand',
1035 + 'product_brand',
1036 + 'product-category',
1037 + 'product_cat',
1038 + 'product_delivery_time',
1039 + 'product_delivery_times',
1040 + 'product_price_label',
1041 + 'product_sale_labels',
1042 + 'product_shipping_class',
1043 + 'product_tag',
1044 + 'product_type',
1045 + 'product_unit',
1046 + 'product_visibility',
1047 + 'products',
1048 +
1049 + // wp-job-manager.
1050 + 'job-category',
1051 + 'job-location',
1052 + 'job-type',
1053 + 'job_cat',
1054 + 'job_category',
1055 + 'job_listing_category',
1056 + 'job_listing_label',
1057 + 'job_listing_region',
1058 + 'job_listing_tag',
1059 + 'job_listing_type',
1060 + 'job_salary',
1061 + 'job_tag',
1062 + 'job_type',
1063 + 'jobman_category',
1064 + 'jobpost_category',
1065 + 'jobpost_job_type',
1066 + 'jobpost_location',
1067 + 'resume_category',
1068 + 'resume_groups',
1069 + 'resume_job_type',
1070 + 'resume_job_type',
1071 + 'resume_languages',
1072 + 'resume_region',
1073 + 'resume_skill',
1074 + 'resume_specialities',
1075 +
1076 + // generic.
1077 + '_resource',
1078 + 'acadp_categories',
1079 + 'acadp_locations',
1080 + 'action-group',
1081 + 'activity',
1082 + 'actor',
1083 + 'actors',
1084 + 'ad-group',
1085 + 'adace-ad-group',
1086 + 'adace-sponsor',
1087 + 'additional_features',
1088 + 'adv_location',
1089 + 'advanced_ads_groups',
1090 + 'advert_category',
1091 + 'affcoups_coupon_category',
1092 + 'affcoups_coupon_type',
1093 + 'ai_log_context',
1094 + 'ai_log_level',
1095 + 'al_product-cat',
1096 + 'aol_ad_category',
1097 + 'aol_ad_location',
1098 + 'aol_ad_type',
1099 + 'aol_application_status',
1100 + 'area',
1101 + 'article-slug',
1102 + 'asgarosforum-category',
1103 + 'asgarosforum-usergroup',
1104 + 'attachment_category',
1105 + 'attachment_tag',
1106 + 'atum_location',
1107 + 'audience_type',
1108 + 'avhec_catgroup',
1109 + 'bartype',
1110 + 'baths',
1111 + 'beds',
1112 + 'bepro_listing_types',
1113 + 'blog_category',
1114 + 'booked_custom_calendars',
1115 + 'brand',
1116 + 'brands',
1117 + 'business',
1118 + 'business_cat',
1119 + 'business_category',
1120 + 'bwg_tag',
1121 + 'byline',
1122 + 'calendar_category',
1123 + 'calendar_feed',
1124 + 'calendar_type',
1125 + 'campaign_category',
1126 + 'campaign_tag',
1127 + 'carousel_cat',
1128 + 'carousels_category',
1129 + 'case27_job_listing_tags',
1130 + 'categories',
1131 + 'category_media',
1132 + 'category_portfolio',
1133 + 'celebrity_cat',
1134 + 'chapters',
1135 + 'chronosly_category',
1136 + 'city',
1137 + 'classified_listing_type',
1138 + 'client-types',
1139 + 'clients_groups',
1140 + 'cm-business-category',
1141 + 'cmdm_category',
1142 + 'cn_log_type',
1143 + 'coderevolution_post_source',
1144 + 'collection',
1145 + 'community',
1146 + 'companies',
1147 + 'company',
1148 + 'cont_category',
1149 + 'content_audit',
1150 + 'country',
1151 + 'course',
1152 + 'course-cat',
1153 + 'course-category',
1154 + 'course_cat',
1155 + 'course_category',
1156 + 'course_difficulty',
1157 + 'course_tag',
1158 + 'courses_type',
1159 + 'cp_campaign',
1160 + 'cp_recipe_category',
1161 + 'csco_post_featured',
1162 + 'ct_status',
1163 + 'ctl-stories',
1164 + 'cuisine',
1165 + 'dc_vendor_shop',
1166 + 'ddownload_category',
1167 + 'ddownload_tag',
1168 + 'dealstore',
1169 + 'department',
1170 + 'departments',
1171 + 'department-company',
1172 + 'developed-by',
1173 + 'dfads_group',
1174 + 'dgfw_gift_categories',
1175 + 'director',
1176 + 'district',
1177 + 'dlm_download_category',
1178 + 'dlm_download_tag',
1179 + 'doc_tag',
1180 + 'document-category',
1181 + 'document-type',
1182 + 'download_artist',
1183 + 'download_category',
1184 + 'download_tag',
1185 + 'downloads_filter',
1186 + 'dps_book',
1187 + 'dt_gallery_category',
1188 + 'dt_logos_category',
1189 + 'dt_portfolio_category',
1190 + 'dt_team_category',
1191 + 'dt_testimonials_category',
1192 + 'dtcast',
1193 + 'dtcreator',
1194 + 'dtdirector',
1195 + 'dtnetworks',
1196 + 'dtstudio',
1197 + 'dtyear',
1198 + 'dvteamtaxonomy',
1199 + 'dwqa-question_category',
1200 + 'dwqa-question_tag',
1201 + 'eafl_category',
1202 + 'easy-testimonial-category',
1203 + 'ecwd_event_category',
1204 + 'edd_log_type',
1205 + 'edition',
1206 + 'ef_editorial_meta',
1207 + 'ef_usergroup',
1208 + 'element_category',
1209 + 'elementor_library_type',
1210 + 'employees_category',
1211 + 'encyclopedia-tag',
1212 + 'envira-tag',
1213 + 'epkb_post_type_1_category',
1214 + 'espresso_event_categories',
1215 + 'espresso_event_type',
1216 + 'essential_grid_category',
1217 + 'et_post_format',
1218 + 'faq-group',
1219 + 'faq-tags',
1220 + 'faq-topic',
1221 + 'faq_cat',
1222 + 'faq_categories',
1223 + 'faq_category',
1224 + 'faqs-category',
1225 + 'fdm-menu-section',
1226 + 'feature',
1227 + 'featured_item_category',
1228 + 'featured_item_tag',
1229 + 'feedback_type',
1230 + 'feeds',
1231 + 'fl-builder-template-type',
1232 + 'flamingo_inbound_channel',
1233 + 'follow_up_email_campaign',
1234 + 'follow_up_email_type',
1235 + 'following_users',
1236 + 'football-team-taxo',
1237 + 'fpd_design_category',
1238 + 'gallery-category',
1239 + 'gallery_cat',
1240 + 'gallery_categories',
1241 + 'gallery_category',
1242 + 'gallery_entries',
1243 + 'gallerycat',
1244 + 'gd_event_tags',
1245 + 'gd_eventcategory',
1246 + 'gd_place_tags',
1247 + 'gd_placecategory',
1248 + 'genre',
1249 + 'genres',
1250 + 'gg_connect_hub',
1251 + 'give_log_type',
1252 + 'gn-genre',
1253 + 'gn-location-1',
1254 + 'gn-location-2',
1255 + 'gn-location-3',
1256 + 'gp_hubs',
1257 + 'gp_portfolios',
1258 + 'gp_videos',
1259 + 'group',
1260 + 'group-documents-category',
1261 + 'groups',
1262 + 'guest',
1263 + 'hashtags',
1264 + 'hotel_facility',
1265 + 'ia_invited_groups',
1266 + 'ia_invitees',
1267 + 'incsub_wiki_category',
1268 + 'industry',
1269 + 'ingredient',
1270 + 'insight-type',
1271 + 'issue',
1272 + 'issuem_issue',
1273 + 'issuem_issue_tags',
1274 + 'jbp_category',
1275 + 'karma-slider-category',
1276 + 'klaviyo_shop_cart_status',
1277 + 'kwlogos-carousel',
1278 + 'layout_category',
1279 + 'layout_type',
1280 + 'ld_course_category',
1281 + 'ld_course_tag',
1282 + 'ld_lesson_category',
1283 + 'ld_lesson_tag',
1284 + 'ld_topic_tag',
1285 + 'lesson-tag',
1286 + 'level',
1287 + 'lingotek_hash',
1288 + 'lingotek_profile',
1289 + 'link_library_category',
1290 + 'linkage',
1291 + 'list-tags',
1292 + 'listing-category',
1293 + 'listing_amenities',
1294 + 'listing_category',
1295 + 'liveblog',
1296 + 'llms_access_plan_visibility',
1297 + 'llms_product_visibility',
1298 + 'localisation',
1299 + 'location',
1300 + 'location-tag',
1301 + 'locations',
1302 + 'magazine',
1303 + 'map_location_categories',
1304 + 'masonry_gallery_category',
1305 + 'mc-event-category',
1306 + 'mec_category',
1307 + 'mec_location',
1308 + 'mec_organizer',
1309 + 'media-category',
1310 + 'media-tags',
1311 + 'media_category',
1312 + 'media_folder',
1313 + 'member_cat',
1314 + 'mentions',
1315 + 'mesh_template_types',
1316 + 'ml-slider',
1317 + 'module',
1318 + 'module-tag',
1319 + 'module_width',
1320 + 'movie_cat',
1321 + 'mpp-component',
1322 + 'mpp-status',
1323 + 'mpp-type',
1324 + 'muvicast',
1325 + 'muvicountry',
1326 + 'muvidirector',
1327 + 'muviindex',
1328 + 'muviquality',
1329 + 'muviyear',
1330 + 'news-category',
1331 + 'news-tag',
1332 + 'news-type',
1333 + 'news_type_cat',
1334 + 'news_category',
1335 + 'nova_menu',
1336 + 'nova_menu_item_label',
1337 + 'offer-types',
1338 + 'organization',
1339 + 'our_team_category',
1340 + 'page_category',
1341 + 'page_condition',
1342 + 'parisrestaurant',
1343 + 'parissauna',
1344 + 'partner_category',
1345 + 'partners',
1346 + 'paswdestinatari',
1347 + 'paypal_ipn_type',
1348 + 'pdf_lv_tag',
1349 + 'pec_events_category',
1350 + 'people',
1351 + 'people-department',
1352 + 'people-expertise',
1353 + 'people-location',
1354 + 'perfect_quotes_category',
1355 + 'performer',
1356 + 'person',
1357 + 'personnal-category',
1358 + 'pexcontentslider_category',
1359 + 'pexfullslider_category',
1360 + 'pexnivoslider_category',
1361 + 'pexpricing_category',
1362 + 'pexservice_category',
1363 + 'pextestimonial_category',
1364 + 'pf_feed_item_tag',
1365 + 'pg_sas_type',
1366 + 'photo_tag',
1367 + 'phototype',
1368 + 'pj-categs',
1369 + 'pj-tags',
1370 + 'pl-categs',
1371 + 'placement',
1372 + 'plan_status',
1373 + 'platform',
1374 + 'player',
1375 + 'plugins_categories',
1376 + 'podcast',
1377 + 'pojo_sidebars',
1378 + 'popup_category',
1379 + 'pornstars',
1380 + 'portada',
1381 + 'portcat',
1382 + 'portfolio-category',
1383 + 'portfolio-gallery',
1384 + 'portfolio-status',
1385 + 'portfolio-skills',
1386 + 'portfolio-tag',
1387 + 'portfolio-tags',
1388 + 'portfolio-type',
1389 + 'portfolio-types',
1390 + 'portfolio_cat',
1391 + 'portfolio_categories',
1392 + 'portfolio_category',
1393 + 'portfolio_cats',
1394 + 'portfolio_client',
1395 + 'portfolio_entries',
1396 + 'portfolio_filter',
1397 + 'portfolio_in',
1398 + 'portfolio_label',
1399 + 'portfolio_skills',
1400 + 'portfolio_tag',
1401 + 'portfolio_tags',
1402 + 'portfolio_type',
1403 + 'posicao',
1404 + 'post-type',
1405 + 'post_format',
1406 + 'post_series',
1407 + 'pp_editorial_meta',
1408 + 'pp_notify_role',
1409 + 'pp_usergroup',
1410 + 'pricingcats',
1411 + 'print_section',
1412 + 'print_status',
1413 + 'product_asset_class',
1414 + 'product_name',
1415 + 'programs',
1416 + 'project-attributes',
1417 + 'project-cat',
1418 + 'project-category',
1419 + 'project-type',
1420 + 'project_category',
1421 + 'project_collection',
1422 + 'project_tag',
1423 + 'projects_category',
1424 + 'projects_tag',
1425 + 'prominence',
1426 + 'promotion-categories',
1427 + 'property-city',
1428 + 'property-feature',
1429 + 'property-status',
1430 + 'property-type',
1431 + 'property-types',
1432 + 'property_action_category',
1433 + 'property_area',
1434 + 'property_category',
1435 + 'property_city',
1436 + 'property_feature',
1437 + 'property_status',
1438 + 'property_type',
1439 + 'province',
1440 + 'provinces',
1441 + 'publisher',
1442 + 'pwb-brand',
1443 + 'qmn_log_type',
1444 + 'qualification',
1445 + 'qualifications',
1446 + 'quality',
1447 + 'question-category',
1448 + 'question-tag',
1449 + 'question-type',
1450 + 'question_cat',
1451 + 'question_category',
1452 + 'question_tag',
1453 + 'quiz',
1454 + 'quiz-type',
1455 + 'quote_status',
1456 + 'rating',
1457 + 'reaction',
1458 + 'recipe-category',
1459 + 'recipe_category',
1460 + 'recipe_type',
1461 + 'region',
1462 + 'registrant-event',
1463 + 'related_keywords',
1464 + 'release-date',
1465 + 'resource-type',
1466 + 'resource_category',
1467 + 'resource_type',
1468 + 'resourcetype',
1469 + 'review-type',
1470 + 'review_category',
1471 + 'rodzaj',
1472 + 'role',
1473 + 'room_category',
1474 + 'room_tag',
1475 + 'roomtype',
1476 + 'rubriek_categorie',
1477 + 'savedreply',
1478 + 'schools',
1479 + 'scope',
1480 + 'scores_cat',
1481 + 'sdm_categories',
1482 + 'sdm_tags',
1483 + 'season',
1484 + 'secondary_html_features',
1485 + 'section',
1486 + 'sector',
1487 + 'series',
1488 + 'series_of_posts',
1489 + 'services_group',
1490 + 'serving',
1491 + 'shop_cart_status',
1492 + 'shop_cat',
1493 + 'shop_order_status',
1494 + 'shop_vendor',
1495 + 'shop_warranty_status',
1496 + 'shopp_category',
1497 + 'shopr_category',
1498 + 'show',
1499 + 'simple_link_category',
1500 + 'site-review-category',
1501 + 'sizes',
1502 + 'skill',
1503 + 'skill_level',
1504 + 'skills',
1505 + 'sld_cat',
1506 + 'slide-page',
1507 + 'slide-types',
1508 + 'slide_categories',
1509 + 'slide_type',
1510 + 'slider',
1511 + 'slider-locations',
1512 + 'slider_category',
1513 + 'slides_category',
1514 + 'slideshow',
1515 + 'sm-category',
1516 + 'snax_format',
1517 + 'sngg_media_tags',
1518 + 'solution_channel',
1519 + 'source_domain',
1520 + 'source_id',
1521 + 'sp_league',
1522 + 'sp_position',
1523 + 'sp_role',
1524 + 'sp_season',
1525 + 'sp_venue',
1526 + 'speaker',
1527 + 'speakers',
1528 + 'special-feature',
1529 + 'specialty',
1530 + 'spnl_log_type',
1531 + 'sponsor_categories',
1532 + 'sponsor_category',
1533 + 'sponsor_type',
1534 + 'spot_tag',
1535 + 'st_af_category',
1536 + 'st_af_tags',
1537 + 'staff',
1538 + 'staff-member-category',
1539 + 'staff-member-group',
1540 + 'staff_category',
1541 + 'staffgroups',
1542 + 'state',
1543 + 'status',
1544 + 'store',
1545 + 'stores',
1546 + 'studio',
1547 + 'study_level',
1548 + 'style',
1549 + 'style_category',
1550 + 'sub_transaction_action',
1551 + 'sub_transaction_result',
1552 + 'subcategory',
1553 + 'subject',
1554 + 'subscription_status',
1555 + 'swift-slider-category',
1556 + 'syn_sitegroup',
1557 + 'szbl-content-tag',
1558 + 'task-queue',
1559 + 'tax_feature',
1560 + 'tcb_symbols_tax',
1561 + 'tcp_product_category',
1562 + 'team',
1563 + 'team-category',
1564 + 'team_cat',
1565 + 'team_categories',
1566 + 'team_category',
1567 + 'team_cats',
1568 + 'team_department',
1569 + 'team_designation',
1570 + 'team_group',
1571 + 'team_member_position',
1572 + 'team_mfcategory',
1573 + 'teams',
1574 + 'tenant_categories',
1575 + 'tenant_location',
1576 + 'tender-category',
1577 + 'test-type',
1578 + 'testimonial-category',
1579 + 'testimonial-group',
1580 + 'testimonial-types',
1581 + 'testimonial_categories',
1582 + 'testimonial_category',
1583 + 'testimonials-category',
1584 + 'testimonials_category',
1585 + 'th_events_cat',
1586 + 'th_galleries_cat',
1587 + 'thegem_clients_sets',
1588 + 'thegem_news_sets',
1589 + 'thegem_portfolios',
1590 + 'thegem_quickfinders',
1591 + 'thegem_teams',
1592 + 'thegem_testimonials_sets',
1593 + 'theme',
1594 + 'themefusion_es_groups',
1595 + 'themes_categories',
1596 + 'themo_cpt_group',
1597 + 'themo_project_type',
1598 + 'themo_room_type',
1599 + 'thirstylink-category',
1600 + 'ticket_channel',
1601 + 'ticket_priority',
1602 + 'timeline_post_tag',
1603 + 'tipo',
1604 + 'tipologie',
1605 + 'tips',
1606 + 'tm-testimonials_category',
1607 + 'tm_testimonial_group',
1608 + 'tooltips_categories',
1609 + 'tour_category',
1610 + 'tour_destination',
1611 + 'tour_facility',
1612 + 'tour_phys',
1613 + 'tour_type',
1614 + 'tp_event_category',
1615 + 'transmission',
1616 + 'treatment-type',
1617 + 'tribe_events_cat',
1618 + 'truethemes-gallery-category',
1619 + 'tsas-category',
1620 + 'tshowcase-categories',
1621 + 'tsml_region',
1622 + 'ttshowcase_groups',
1623 + 'tvo_tags',
1624 + 'type',
1625 + 'types',
1626 + 'u_course_cat',
1627 + 'u_department',
1628 + 'u_event_cat',
1629 + 'ufaq-category',
1630 + 'ufaq-tag',
1631 + 'um_hashtag',
1632 + 'um_user_tag',
1633 + 'uncodeblock_category',
1634 + 'upg_cate',
1635 + 'urp-review-category',
1636 + 'us_portfolio_category',
1637 + 'us_testimonial_category',
1638 + 'user-group',
1639 + 'user_category',
1640 + 'user_status',
1641 + 'vendor',
1642 + 'venue',
1643 + 'video-category',
1644 + 'video-series',
1645 + 'video-tag',
1646 + 'video_category',
1647 + 'video_tag',
1648 + 'videos',
1649 + 'videos_categories',
1650 + 'voice_category',
1651 + 'vtmin_rule_category',
1652 + 'vtprd_rule_category',
1653 + 'w2dc-category',
1654 + 'w2dc-location',
1655 + 'w2dc-tag',
1656 + 'wcb_sponsor_level',
1657 + 'wcb_track',
1658 + 'wccf_checkout_field_field_type',
1659 + 'wccf_checkout_field_status',
1660 + 'wccf_order_field_field_type',
1661 + 'wccf_order_field_status',
1662 + 'wccf_product_field_field_type',
1663 + 'wccf_product_field_status',
1664 + 'wccf_product_prop_field_type',
1665 + 'wccf_product_prop_status',
1666 + 'wccf_user_field_field_type',
1667 + 'wccf_user_field_status',
1668 + 'wcfm_knowledgebase_category',
1669 + 'wcm_task_category',
1670 + 'wcpv_product_vendors',
1671 + 'wcs-instructor',
1672 + 'wcs-room',
1673 + 'wcs-type',
1674 + 'wdca_ad_categories',
1675 + 'webinar_type_cat',
1676 + 'where',
1677 + 'who',
1678 + 'wiki-category',
1679 + 'wiki_cats',
1680 + 'wl_entity_type',
1681 + 'workout_entries',
1682 + 'works-category',
1683 + 'wp-rest-api-log-method',
1684 + 'wp-rest-api-log-source',
1685 + 'wp-rest-api-log-status',
1686 + 'wp-type-activity-types',
1687 + 'wp-type-contacts-subtype',
1688 + 'wp-type-group',
1689 + 'wp_bannerize_tax',
1690 + 'wp_log_type',
1691 + 'wp_super_faq_category',
1692 + 'wpbdm-region',
1693 + 'wpbdp_category',
1694 + 'wpbdp_tag',
1695 + 'wpcm_make_model',
1696 + 'wpdmcategory',
1697 + 'wpfb_file_category',
1698 + 'wpfcas-category',
1699 + 'wpfd-category',
1700 + 'wplead_list_category',
1701 + 'wplss_logo_showcase_cat',
1702 + 'wpm-testimonial-category',
1703 + 'wpmf-category',
1704 + 'wpostahs-slider-category',
1705 + 'wprm_course',
1706 + 'wprm_cuisine',
1707 + 'wprm_ingredient',
1708 + 'wprm_keyword',
1709 + 'wprss_category',
1710 + 'wps_forum',
1711 + 'wpsc-variation',
1712 + 'wpsc_log_type',
1713 + 'wpsc_product_category',
1714 + 'wpseo_locations_category',
1715 + 'wpsisac_slider-category',
1716 + 'wpsl_store_category',
1717 + 'wpt_category',
1718 + 'wpt_result',
1719 + 'wpt_scale',
1720 + 'wpv_sermons_category',
1721 + 'wpvqgr_tag',
1722 + 'writer',
1723 + 'wyz_business_category',
1724 + 'wyz_business_rating_category',
1725 + 'wyz_business_tag',
1726 + 'wzkb_category',
1727 + 'year',
1728 + 'years',
1729 + 'yith_product_brand',
1730 + 'yith_shop_vendor',
1731 + 'yst_prominent_words',
1732 + 'zipcode',
1733 + 'zoninator_zones',
1734 + 'zrf_field_group',
1735 +
1736 + // End The Backlog @see https://wp.me/p9MPsk-X0.
1737 + 'bill-status',
1738 + 'etb-audience',
1739 + 'etb-state',
1740 + 'etb-target',
1741 + 'etb-topic',
1742 + 'etb-year',
1743 + 'foia-response-status',
1744 + 'target-type',
1745 + 'timeline-pillar',
1746 + 'timeline-type',
1747 +
1748 + // wp.com martketplace search - @see https://wp.me/pdh6GB-Ax#comment-2104
1749 + 'wpcom_marketplace_categories',
1750 +
1751 + // wp.com a8c-support-theme taxonomies.
1752 + 'kb_category',
1753 + 'kb_tag',
1754 +
1755 + // coolhunting.com
1756 + 'article-type',
1757 +
1758 + ); // end taxonomies.
1759 +
1760 + /**
1761 + * List of options to sync
1762 + *
1763 + * @access private
1764 + * @static
1765 + *
1766 + * @var array
1767 + */
1768 + private static $options_to_sync = array(
1769 + 'jetpack_search_ai_prompt_override',
1770 + 'jetpack_search_color_theme',
1771 + 'jetpack_search_result_format',
1772 + 'jetpack_search_default_sort',
1773 + 'jetpack_search_overlay_trigger',
1774 + 'jetpack_search_excluded_post_types',
1775 + 'jetpack_search_highlight_color',
1776 + 'jetpack_search_enable_sort',
1777 + 'jetpack_search_inf_scroll',
1778 + 'jetpack_search_show_powered_by',
1779 + 'jetpack_search_experience',
1780 + 'jetpack_search_ai_answers_enabled',
1781 + 'jetpack_search_suggestions_enabled',
1782 + 'jetpack_search_override_woocommerce_search_template',
1783 + 'reader_chat',
1784 + 'instant_search_enabled',
1785 + ); // end options.
1786 +
1787 + /*
1788 + * Taxonomies we know don't sync.
1789 + * See also sync/src/class-defaults.php
1790 + *
1791 + * 'network'
1792 + * 'post_status'
1793 + * 'product_cat'
1794 + * 'tags'
1795 + *
1796 + */
1797 +
1798 + //
1799 + // Hooks into sync.
1800 +
1801 + /**
1802 + * Add Search post meta to the post meta whitelist.
1803 + *
1804 + * @param array $list Existing post meta whitelist.
1805 + * @return array Updated post meta whitelist.
1806 + */
1807 + public function add_search_post_meta_whitelist( $list ) {
1808 + return array_merge( $list, static::get_all_postmeta_keys() );
1809 + }
1810 +
1811 + /**
1812 + * Add Search options to the options whitelist.
1813 + *
1814 + * @param array $list Existing options whitelist.
1815 + * @return array Updated options whitelist.
1816 + */
1817 + public function add_search_options_whitelist( $list ) {
1818 + return array_merge( $list, static::get_all_option_keys() );
1819 + }
1820 +
1821 + /**
1822 + * Add AI Answer CPTs to the post types sync whitelist when AI Answers is enabled.
1823 + *
1824 + * @param array $list Existing post types whitelist.
1825 + * @return array Updated whitelist.
1826 + */
1827 + public function add_ai_answer_post_types( $list ) {
1828 + $ai_answers_enabled = class_exists( AI_Answers::class )
1829 + ? AI_Answers::is_enabled()
1830 + : apply_filters( 'jetpack_search_ai_answers_enabled', (bool) get_option( 'jetpack_search_ai_answers_enabled', false ) );
1831 +
1832 + if ( ! $ai_answers_enabled ) {
1833 + return $list;
1834 + }
1835 + $list[] = 'wp_guideline';
1836 + return $list;
1837 + }
1838 +
1839 + // Indexing functions for wp.com.
1840 +
1841 + /**
1842 + * Check whether a postmeta or taxonomy 'key' is in the indexable
1843 + * list. This is called by the indexing code on wp.com to decide
1844 + * whether to include something in the index.
1845 + *
1846 + * @static
1847 + * @access public
1848 + *
1849 + * @param string $type Either 'postmeta' or 'taxonomy'.
1850 + * @param string $key The postmeta key or taxonomy name.
1851 + * @return boolean
1852 + */
1853 + public static function is_indexable( $type, $key ) {
1854 + switch ( $type ) {
1855 + case 'postmeta':
1856 + return isset( self::$postmeta_to_sync[ $key ] );
1857 + case 'taxonomy':
1858 + return in_array( $key, self::$taxonomies_to_sync, true );
1859 + }
1860 + return false;
1861 + }
1862 +
1863 + /**
1864 + *
1865 + * Get the indexing spec for a postmeta key.
1866 + *
1867 + * @static
1868 + * @access public
1869 + *
1870 + * @param string $key The postmeta key.
1871 + * @return array The spec.
1872 + */
1873 + public static function get_postmeta_spec( $key ) {
1874 + return self::$postmeta_to_sync[ $key ];
1875 + }
1876 +
1877 + /**
1878 + * Get all post meta keys that get synced.
1879 + *
1880 + * @access public
1881 + *
1882 + * @return array List of post meta keys that get synced.
1883 + */
1884 + public static function get_all_postmeta_keys() {
1885 + return array_keys( self::$postmeta_to_sync );
1886 + }
1887 +
1888 + /**
1889 + * Get all option keys that get synced.
1890 + *
1891 + * @access public
1892 + *
1893 + * @return array List of option keys that get synced.
1894 + */
1895 + public static function get_all_option_keys() {
1896 + return self::$options_to_sync;
1897 + }
1898 +
1899 + /**
1900 + * Get all unindexed postmeta.
1901 + * This is mostly for testing.
1902 + *
1903 + * @access public
1904 + *
1905 + * @return array List of postmeta that are not synced.
1906 + */
1907 + public static function get_all_unindexed_postmeta_keys() {
1908 + return array_keys( self::$unindexed_postmeta );
1909 + }
1910 +
1911 + /**
1912 + * Get all taxonomies that get synced.
1913 + * This is mostly for testing.
1914 + *
1915 + * @access public
1916 + *
1917 + * @return array List of taxonomies that get synced.
1918 + */
1919 + public static function get_all_taxonomies() {
1920 + return self::$taxonomies_to_sync;
1921 + }
1922 +}