我有一个双语(英语/法语)网站。
我有自定义帖子类型和自定义分类,其翻译选项中的值为“不执行任何操作”,这是为了保持此内容不被翻译而做出的决定,我希望保持这种方式。
我希望该网站的英文版和法文版都能提供这些内容,但实际情况并非如此。内容始终在站点的默认语言版本中查看。与WPML支持人员交谈时,只确认我的问题并且他们总是使用默认语言来“无所事事”。
我注意到,如果我将?lang=fr
添加到网址,则内容将显示在网站的法语版本中。
我的问题是:
谢谢,
答案 0 :(得分:0)
你可以检测,如果内容中有一些来自WPML的值,那么你可以使用一些常量:ICL_LANGUAGE_CODE
http://wpml.org/documentation/support/wpml-coding-api/
对于自定义的posttype和自定义分类,我可以建议: http://wpml.org/faq/how-to-translate-custom-types/
答案 1 :(得分:0)
对不起,哎呀。你可能需要这样的东西:
$id = icl_object_id($post->ID, 'page', false,ICL_LANGUAGE_CODE);
$page = is_page($id);
http://wpml.org/documentation/support/creating-multilingual-wordpress-themes/language-dependent-ids/
答案 2 :(得分:0)
感谢Ladislav的提议,
使用icl_object_id
是一个好主意,但是在处理这个问题时,我意识到如果内容具有“不做任何事”的话,我就不必费心了。 ;因为我已经知道了,并且它不会改变。文档说明你必须关闭“让主题工作多语言”,并且很难说这将如何影响主题,因为它是一个ThemeForest主题。
我希望有一个真正灵活的解决方案,因为这将解决我发现的问题,即WPML如何管理不需要翻译的内容。
但是,根据您的建议,我继续寻找答案,并找到解决问题的开始。
首先,要编辑链接,我必须设置一个' add_filter'对应于我想要编辑的链接类型。
add_filter( 'post_type_link', 'add_lang_fr', 10, 2 );
add_filter( 'term_link', 'add_lang_fr', 10, 2 );
然后,我测试网址以确保它们与需要的内容相匹配?lang = fr。
function add_lang_fr( $url, $post ) {
if ('fr' == ICL_LANGUAGE_CODE) { // if current language is fr
if ( 'article' == get_post_type( $post ) || FALSE !== strpos($url, 'article-tag') ) { // if link goes to a CPT 'article' or have 'article-tag' in url
return add_query_arg('lang', 'fr', $url);
}
}
return ($url);
}
回答我的初步问题:
add_query_arg
是关键,因为它允许在网址上添加查询参数...这正是我需要的。 有没有办法减少通话次数并改善页面加载?