PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 2.10.0
Translate and Go multilingual – Automatic AI translation – wpLingua v2.10.0
2.16.6 2.16.5 2.16.4 2.16.3 2.16.2 2.16.1 2.16.0 2.15.2 2.15.1 2.15.0 2.14.3 2.14.2 2.14.1 2.14.0 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 trunk 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 All 111 releases
wplingua / inc / search.php

search.php in Translate and Go multilingual – Automatic AI translation – wpLingua 2.10.0, at inc/search.php

103 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if ( ! defined( 'WPINC' ) ) {
5 die;
6 }
7
8
9 /**
10 * Translate search query if page is translated
11 *
12 * @param object $query
13 * @return void
14 */
15 function wplng_translate_search_query( $query ) {
16
17 /**
18 * Check if it's a search query
19 */
20
21 if ( ! $query->is_search()
22 || ! isset( $query->query['s'] )
23 || ! is_string( $query->query['s'] )
24 ) {
25 return;
26 }
27
28 /**
29 * Get current and website languages
30 * Ckeck if search need to be translate
31 */
32
33 $language_current = wplng_get_language_current_id();
34 $language_website = wplng_get_language_website_id();
35
36 if ( $language_website === $language_current ) {
37 return;
38 }
39
40 /**
41 * Sanitize search query and check if is translatable
42 */
43
44 $search_string = sanitize_text_field( $query->query['s'] );
45 $search_string = wplng_text_esc( $search_string );
46
47 if ( ! wplng_text_is_translatable( $search_string ) ) {
48 return;
49 }
50
51 /**
52 * Call API to get the translation
53 */
54
55 $translated_search = wplng_api_call_translate(
56 array( $search_string ),
57 $language_current,
58 $language_website
59 );
60
61 if ( ! isset( $translated_search[0] ) ) {
62 return;
63 }
64
65 $translated_search = $translated_search[0];
66
67 /**
68 * Check and clear the translation
69 */
70
71 // Remove added ponctuation
72 $translated_search = preg_replace(
73 '#[^A-Za-z0-9]#',
74 '',
75 $translated_search
76 );
77
78 // Clear translation
79 $translated_search = trim( esc_attr( $translated_search ) );
80
81 // Check if translation is not empty after cleaning
82 if ( '' === $translated_search ) {
83 return;
84 }
85
86 /**
87 * Replace the search text by the translation
88 */
89
90 $query->set( 's', $translated_search );
91 }
92
93
94 /**
95 * Make search untranslated
96 *
97 * @param bool $is_translatable
98 * @return void
99 */
100 function wplng_exclude_search( $is_translatable ) {
101 return $is_translatable && ! ( is_search() || isset( $_GET['s'] ) );
102 }
103