2016-04-05 53 views
0

WPML是用於管理多語言網站的優秀插件,因爲它允許編輯大量與翻譯內容相關的相關信息。然而,儘管這個插件添加了hreflang標籤,但它們缺乏對hreflang =「x-default」插入的支持。如何在WPML 3.3.6插件中添加hreflang =''x-default''?

所以我想知道如何將這個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過濾器的解決方案,所以我只是寫了x-default hreflang到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鏈接在其他的下方輸出,但據我所知,這並不是必須的。

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; 
}