Wordpress 如何添加hreflang=';x-默认值';在WPML3.3.6插件中?
WPML是管理多语言网站的优秀插件,因为它允许编辑大量与翻译内容相关的信息。然而,尽管该插件添加了hreflang标记,但缺少对hreflang=“x-default”anotation的支持 因此,我想知道如何将这个x-default标记添加到WPML站点,并使其指向我想要的URL语言版本 WPML论坛中有一些代码示例,但它们是为这个插件的旧版本设计的。它们都指向编辑head_langs函数,该函数当前包含以下代码:Wordpress 如何添加hreflang=';x-默认值';在WPML3.3.6插件中?,wordpress,wpml,hreflang,Wordpress,Wpml,Hreflang,WPML是管理多语言网站的优秀插件,因为它允许编辑大量与翻译内容相关的信息。然而,尽管该插件添加了hreflang标记,但缺少对hreflang=“x-default”anotation的支持 因此,我想知道如何将这个x-default标记添加到WPML站点,并使其指向我想要的URL语言版本 WPML论坛中有一些代码示例,但它们是为这个插件的旧版本设计的。它们都指向编辑head_langs函数,该函数当前包含以下代码: function head_langs() { $l
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( '&', '&', $alternate_hreflang ) );
}
}
}
function head_langs()
{
$languages=$this->get_ls_languages(数组('skip_missing'=>true));
//如果有翻译并且没有页面内容。。。
//仅在某些条件下渲染头部备用链接
$the_post=get_post();
$theu-id=$theu-post?$theu-post->id:false;
$is_valid=count($languages)>1&&!is_paged()&((is_single()| is|page())&&&$the_id&&get_post_status(_id)=‘publish')|(is home()| is front_page()| is post| is archive());
如果($有效){
foreach($code=>$lang形式的语言){
$alternate\u hreflang=应用过滤器('wpml\u alternate\u hreflang',$lang['url'],$code);
printf(“”.PHP_EOL,
$this->get_language_标记($code),
str_replace(“&;”、“&;”、$alternate_hreflang));
}
}
}
我也遇到了同样的问题,我不想覆盖核心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);
//将x-default添加到hreflang
函数x_default_hreflang(){
$languages=icl_get_languages('skip_missing=1');
foreach($l){
如果($l['language_code']=='en'){//设置默认语言
$x_default_url=$l['url'];
$output=''.PHP\u EOL;
echo$输出;
}
}
}
添加动作('wp\u head','x\u default\u hreflang',1);
add_操作的优先级相当高,因此备用hreflang链接在其他链接的下面输出,但据我所知,这并不是真正必要的 /*---------------------------------------------------------------------------
/* ---------------------------------------------------------------------------
* 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;
}
*使用WPML根据谷歌内容指南设置hreflang=“x-default”
*放入functions.php-不要忘记使用子主题;-)
* --------------------------------------------------------------------------- */
添加过滤器('wpml\U备用\U hreflang','wps\U头\U hreflang\U xdefault',10,2);
函数wps\u head\u hreflang\u xdefault($url,$lang\u代码){
if($lang_code==apply_filters('wpml_default_language',NULL)){
回声';
}
返回$url;
}
我的网站中有两种语言,添加此功能就是添加新的备用链接,而不是替换默认语言hreflang。此代码适用于3.x.x版。可能他们在新版本(当前版本为4.2.x)中更改了行为,因此不再需要此代码。您检查过了吗?它们仍然不支持x-default,需要手动添加。使用代码不是替换默认语言,而是添加新链接。