diff --git a/lib/Frontend/Fixes.php b/lib/Frontend/Fixes.php new file mode 100644 index 0000000..e2f22f9 --- /dev/null +++ b/lib/Frontend/Fixes.php @@ -0,0 +1,124 @@ +opts = getOptions(); + + // Extend WPML Language selector + add_filter('icl_ls_languages', [&$this, 'extend_wpml_ls'], 100, 1); + + // Fix search in latin script + add_filter('posts_search', [&$this,'fix_search'], 100, 2); + + // Change Page title on latin + add_filter('wp_title', [&$this,'convert_title'], 100, 3); + add_filter('pre_get_document_title', [&$this,'convert_title'], 100, 3); + add_filter('document_title_parts', [&$this,'convert_title_parts'], 100, 3); + + } + + public function extend_wpml_ls($languages) + { + + if (!$this->opts['ml']['wpml']) : + return $languages; + endif; + + $active = $this->lm->get_script(); + + $cir = $lat = $languages['sr']; + + $primary = 'sr@cir'; + $secondary = 'sr'; + + if ($active == 'cir') : + + $primary = 'sr'; + $secondary = 'sr@lat'; + + endif; + + $serbian = [ + $primary => array_replace($cir, [ + 'native_name' => do_shortcode('[stl_cyr]српски (ћир)[/stl_cyr]'), + 'translated_name' => "{$languages['sr']['translated_name']} (cyr)", + 'url' => add_query_arg($this->opts['core']['param'], 'cir', $languages['sr']['url']), + 'active' => ($active == 'cir') ? 1 : 0 + ]), + $secondary => array_replace($lat, [ + 'native_name' => 'srpski (lat)', + 'translated_name' => "{$languages['sr']['translated_name']} (lat)", + 'url' => add_query_arg($this->opts['core']['param'], 'lat', $languages['sr']['url']), + 'active' => ($active == 'lat') ? 1 : 0 + ]) + ]; + + unset($languages['sr']); + + return $serbian + $languages; + + } + + public function fix_search(string $search, \WP_Query $query) + { + + if (is_admin()) + return $search; + + if (!$this->opts['fixes']['search']) + return $search; + + if ( !$query->is_main_query()) + return $search; + + $g = $_GET['s'] ?? ''; + + if ($g == '') + return $search; + + if (!is_search()) + return $search; + + return multiscript_sql_query($search); + + } + + public function convert_title($title,$sep = '',$location = '') + { + + if (current_theme_supports( 'title-tag' )) : + return $title; + endif; + + return transliterate($title); + + } + + public function convert_title_parts($title) + { + + $newtitle = []; + + foreach ($title as $part => $value) : + + $newtitle[$part] = transliterate($value); + + endforeach; + + return $newtitle; + + } + +} \ No newline at end of file