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;
 }
Ejemplo n.º 2
0
    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;
    }