WPML multilingual plugin for WordPress can already add hreflang
tags for your languages used. I like to add x-default
language tags too to designate default version to search engines. Here’s how it could be added to your child theme, when default language is English.
Put this in functions.php
of your theme.
/* ---------------------------------------------------------------------------
* Set hreflang="x-default" according to Google content guidelines with WPML
* --------------------------------------------------------------------------- */
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" hreflang="x-default" href="' . $url . '" />';
}
return $url;
}
WPML and Autoptimize Inline Full CSS Problem
I’ve noticed that when I inline all CSS with Autoptimize plugin WPML code could be pushed to the bottom, even when I select output of hreflang
tags to the top in WPML settings.
This code snippet could move your inlined CSS just before the closing </head>
so that hreflang
will go to top of source code.
// autoptimize before head
add_filter('autoptimize_filter_css_replacetag','te_css_replacetag',10, 1 );
function te_css_replacetag($replacetag) {
return array("</head>","before");
}
This way hreflang
tags will have better visibility to google.
Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘wps_head_hreflang_xdefault’ not found or invalid function name
I don’t see any error, latest wpml and php 7.1, sorry