function mltlngg_alternate_links() { global $mltlngg_enabled_languages, $mltlngg_current_language, $mltlngg_get_default_language, $mltlngg_options, $mltlngg_old_language, $mltlngg_enabled_languages_locale; if (!$mltlngg_options['display_alternative_link']) { return false; } $home_url = mltlngg_home_url(); if (is_array($home_url)) { $home_url = $home_url[0]; $is_subfolder = true; } else { $is_subfolder = false; } $html = ''; $is_custom_permalink = get_option('permalink_structure'); $old_link_param = is_null($mltlngg_old_language) ? false : $mltlngg_old_language; $cur_link_param = is_null($mltlngg_current_language) ? false : $mltlngg_current_language; $defaults = array('x-default', $mltlngg_get_default_language); $link_attr_args = array(array('hreflang' => 'x-default', 'link_param' => $mltlngg_get_default_language)); foreach ($mltlngg_enabled_languages as $lang) { $link_attr_args[] = array('hreflang' => $lang['locale'], 'link_param' => $lang['locale']); } /** * You can add, edit or remove some links */ $link_attr_args = apply_filters('bwsplgns_mltlngg_add_alt_links', $link_attr_args); if (empty($link_attr_args) || !is_array($link_attr_args)) { return false; } foreach ($link_attr_args as $item) { if (empty($item['hreflang']) || empty($item['link_param'])) { continue; } if ($is_custom_permalink) { if (in_array($item['hreflang'], $defaults) && true === $mltlngg_options['hide_link_slug']) { /* * display link without language prefix * for default language */ $needle = $cur_link_param . '/'; $haystack = ''; } else { $needle = $cur_link_param; $haystack = $item['link_param']; } if ($is_subfolder && $mltlngg_current_language == $mltlngg_get_default_language) { $params = explode('/', trim($_SERVER['REQUEST_URI'], '/')); if (is_array($params) && !empty($params)) { $folder = $params[0]; unset($params[0]); foreach ($mltlngg_enabled_languages_locale as $locale) { $key = array_search($locale, $params); if ($key) { unset($params[$key]); break; } } $params = empty($params) ? '' : implode('/', $params); } $link_param = in_array($item['hreflang'], $defaults) && true === $mltlngg_options['hide_link_slug'] ? '' : '/' . $item['link_param']; $language_link = $home_url . '/' . $folder . $link_param . '/' . $params; } else { $language_link = $home_url . mltlngg_str_replace_once($needle, $haystack, $_SERVER['REQUEST_URI']); } } else { $language_link = in_array($item['hreflang'], $defaults) && true === $mltlngg_options['hide_link_slug'] ? remove_query_arg('lang', $home_url . $_SERVER['REQUEST_URI']) : add_query_arg('lang', $item['link_param'], $home_url . $_SERVER['REQUEST_URI']); } $html .= '<link rel="alternate" hreflang="' . esc_attr($item['hreflang']) . '" href="' . esc_url(rtrim($language_link, '/')) . '" />'; } echo $html; }
function mltlngg_get_switcher_block($mltlngg_language_switcher = false) { global $mltlngg_current_language, $mltlngg_enabled_languages, $current_blog, $mltlngg_options; $switcher = '<div class="mltlngg_switcher"><noscript><p style="color:red;">' . __('Please enable JavaScript to use the option', 'multilanguage') . '</p></noscript>'; if (!$mltlngg_language_switcher) { $mltlngg_language_switcher = $mltlngg_options['language_switcher']; } /* Language switcher style */ switch ($mltlngg_language_switcher) { case 'drop-down-list': $switcher .= '<select style="background-image: url(' . plugins_url('images/flags/', __FILE__) . $mltlngg_current_language . '.png ); background-repeat: no-repeat; background-position: left center; padding-left: 20px; display: block !important;" name="mltlngg_change_display_lang" onchange="document.location.href=this.options[this.selectedIndex].value;">'; foreach ($mltlngg_enabled_languages as $mltlngg_one_language) { $mltlngg_selected = $mltlngg_one_language['locale'] == $mltlngg_current_language ? 'selected="selected"' : ''; $mltlngg_option_display = $mltlngg_one_language['locale'] == $mltlngg_current_language && count($mltlngg_enabled_languages) > 1 ? ' display: none;' : ''; $home = get_option('home'); $mltlngg_is_subfolder = mltlngg_is_subfolder(); if (is_multisite() && !is_subdomain_install() || $mltlngg_is_subfolder) { if (!$mltlngg_is_subfolder) { if ($current_blog) { $home_main = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on" ? "https://" : "http://") . $current_blog->domain; $home_main = esc_url($home_main); } } else { $home_dir = str_replace('http://www.', '', $home); $home_dir = str_replace('https://www.', '', $home_dir); $home_dir = str_replace('http://', '', $home_dir); $home_dir = str_replace('https://', '', $home_dir); $server_name = $_SERVER['SERVER_NAME']; if ('www.' == substr($server_name, 0, 4)) { $server_name = substr($server_name, 4); } $home_dir = str_replace($server_name . ':' . $_SERVER['SERVER_PORT'], '', $home_dir); $home_dir = str_replace($server_name, '', $home_dir); $home_dir = rtrim($home_dir, '/ '); $home_dir_count = strlen($home_dir); $home_main = substr($home, 0, -$home_dir_count); } $language_link = $home_main . mltlngg_str_replace_once($mltlngg_current_language, $mltlngg_one_language['locale'], $_SERVER['REQUEST_URI']); } else { $language_link = $home . mltlngg_str_replace_once($mltlngg_current_language, $mltlngg_one_language['locale'], $_SERVER['REQUEST_URI']); } $switcher .= '<option ' . $mltlngg_selected . ' value="' . $language_link . '" style="background-image: url(' . plugins_url('images/flags/', __FILE__) . $mltlngg_one_language['locale'] . '.png); background-repeat: no-repeat; background-position: left center; padding-left: 20px;' . $mltlngg_option_display . '">' . $mltlngg_one_language['name'] . '</option>'; } $switcher .= '</select>'; break; case 'drop-down-icons': $switcher .= '<form name="mltlngg_change_language" method="post" action=""> <ul class="mltlngg-lang-switch"> <li> <img src="' . plugins_url('images/flags/', __FILE__) . $mltlngg_current_language . '.png"> <ul>'; foreach ($mltlngg_enabled_languages as $mltlngg_one_lang) { if ($mltlngg_one_lang['locale'] != $mltlngg_current_language) { $switcher .= '<li> <button class="mltlngg-lang-button" name="mltlngg_change_display_lang" value="' . $mltlngg_one_lang['locale'] . '" title="' . $mltlngg_one_lang['name'] . '"> <img class="mltlngg-lang" src="' . plugins_url('images/flags/', __FILE__) . $mltlngg_one_lang['locale'] . '.png" alt="' . $mltlngg_one_lang['name'] . '"> </button> </li>'; } } $switcher .= '</ul> </li> </ul> </form>'; break; case 'flags-icons': $switcher .= '<form name="mltlngg_change_language" method="post" action="">'; foreach ($mltlngg_enabled_languages as $mltlngg_one_lang) { $switcher .= '<button class="mltlngg-lang-button-icons" name="mltlngg_change_display_lang" value="' . $mltlngg_one_lang['locale'] . '" title="' . $mltlngg_one_lang['name'] . '"> <img class="'; $switcher .= $mltlngg_one_lang['locale'] == $mltlngg_current_language ? 'mltlngg-current-lang' : 'mltlngg-lang'; $switcher .= '" src="' . plugins_url('images/flags/', __FILE__) . $mltlngg_one_lang['locale'] . '.png" alt="' . $mltlngg_one_lang['name'] . '"> </button>'; } $switcher .= '</form>'; break; } $switcher .= '</div>'; return $switcher; }