2016-04-05 13 views
0

WPML - отличный плагин для управления многоязычными сайтами, поскольку он позволяет редактировать много актуальной информации, связанной с переведенным контентом. Однако, хотя этот плагин добавляет теги hreflang, theres - это отсутствие поддержки hreflang = "x-default" anotation.Как добавить hreflang = '' x-default '' в плагин WPML 3.3.6?

Поэтому я хотел бы знать, как добавить этот тег x-default к WPML-сайтам и указать его на желаемую языковую версию URL-адреса.

Есть несколько примеров кода на форумах WPML, но они предназначены для более старых версий этого плагина. Все они указывают на изменения функции head_langs, что в настоящее время состоит в следующем коде:

function head_langs() 
    { 
     $languages = $this->get_ls_languages(array('skip_missing' => true)); 
     // If there are translations and is not paged content... 

     //Renders head alternate links only on certain conditions 
     $the_post = get_post(); 
     $the_id = $the_post ? $the_post->ID : false; 
     $is_valid = count($languages) > 1 && !is_paged() && (((is_single() || is_page()) && $the_id && get_post_status($the_id) == 'publish') || (is_home() || is_front_page() || is_archive())); 

     if ($is_valid) { 
      foreach ($languages as $code => $lang) { 
       $alternate_hreflang = apply_filters('wpml_alternate_hreflang', $lang[ 'url' ], $code); 
       printf('<link rel="alternate" hreflang="%s" href="%s" />' . PHP_EOL, 
         $this->get_language_tag($code), 
         str_replace('&amp;', '&', $alternate_hreflang)); 
      } 
     } 
    } 

Спасибо заранее!

ответ

-1

У меня была такая же проблема, и я не хотел перезаписывать основные файлы WPML, а также не нашел решение, работающее с WPML-фильтром, поэтому я просто написал hreflang x-умолчанию для заголовка WordPress следующим образом:

// add x-default to hreflang 
function x_default_hreflang() { 
    $languages = icl_get_languages('skip_missing=1'); 
    foreach($languages as $l){ 
     if ($l['language_code'] == 'en') { // set your default language 
      $x_default_url = $l['url']; 
      $output='<link rel="alternate" hreflang="x-default" href="' . $x_default_url . '" />' . PHP_EOL; 
      echo $output; 
     } 
    } 
} 

add_action('wp_head','x_default_hreflang',1); 

приоритет на add_action довольно высок, поэтому ссылка альтернативного hreflang является outputed под другими, но, насколько я знаю, что это на самом деле не нужно.

0
/* --------------------------------------------------------------------------- 
* Set hreflang="x-default" according to Google content guidelines with WPML 
* Put into your functions.php - don't forget to use a child-theme ;-) 
* --------------------------------------------------------------------------- */ 
add_filter('wpml_alternate_hreflang', 'wps_head_hreflang_xdefault', 10, 2); 
function wps_head_hreflang_xdefault($url, $lang_code) { 

    if($lang_code == apply_filters('wpml_default_language', NULL)) { 

     echo '<link rel="alternate" href="' . $url . '" hreflang="x-default" />'; 
    } 

    return $url; 
}