Im使用Qtranlate plus(https://wordpress.org/plugins/qtranslate-xp/)我也使用Yoast的Wordpress seo,但元标题和描述字段无法翻译。有人对此进行了修复,或者知道修复该问题的插件吗?
由于qTranslate不是加号,因此存在此问题。Yoast提供了一个修复方案:http://kb.yoast.com/article/52-wordpress-seo-qtranslate
function qtranslate_filter( $text ) {
return __( $text );
}
add_filter( 'wpseo_title', 'qtranslate_filter', 10, 1 );
add_filter( 'wpseo_metadesc', 'qtranslate_filter', 10, 1 );
add_filter( 'wpseo_metakey', 'qtranslate_filter', 10, 1 );
add_filter( 'wpseo_opengraph_title', 'qtranslate_filter', 10, 1 );
这对我来说还不够……我追踪了$text,发现语言语法被破坏了。不是
<!--:de-->, it was <!-:de->.
因此,我直接在qtranslate_filter($..)中添加了一个替换项。
function qtranslate_filter( $text ) {
$fixedOpenTag = str_replace("<!-:", "<!--:", $text);
$fixedCloseTag = str_replace("->", "-->", $fixedOpenTag);
return __($fixedCloseTag);
}
这适用于前端输出。我查看了yoast的源代码,但现在还没有修复。。。
我修改过滤器并直接使用数据库中的字符串
function qtranslate_filter_yoast_title($text)
{
$post_id = get_the_ID();
$text = get_metadata('post', $post_id, "_yoast_wpseo_title", true);
return __($text);
}
function qtranslate_filter_yoast_desc($text)
{
$post_id = get_the_ID();
$text = get_metadata('post', $post_id, "_yoast_wpseo_metadesc", true);
return __($text);
}
add_filter('wpseo_title', 'qtranslate_filter_yoast_title', 10, 1);
add_filter('wpseo_metadesc', 'qtranslate_filter_yoast_desc', 10, 1);
add_filter('wpseo_opengraph_desc', 'qtranslate_yoast_filter_desc', 10, 1);
add_filter('wpseo_opengraph_title', 'qtranslate_filter_yoast_title', 10, 1);