WPML - 如何浏览未翻译的内容,保持当前的语言价值

时间:2014-04-28 16:45:20

标签: wordpress wpml

我有一个双语(英语/法语)网站。

我有自定义帖子类型和自定义分类,其翻译选项中的值为“不执行任何操作”,这是为了保持此内容不被翻译而做出的决定,我希望保持这种方式。

我希望该网站的英文版和法文版都能提供这些内容,但实际情况并非如此。内容始终在站点的默认语言版本中查看。与WPML支持人员交谈时,只确认我的问题并且他们总是使用默认语言来“无所事事”。

我注意到,如果我将?lang=fr添加到网址,则内容将显示在网站的法语版本中。

我的问题是:

  1. 如何在内容基础上检测内容是否具有“不执行任何操作”的值 网址?
  2. 如何将'?lang = fr'即时添加到他们的网址中 这些内容?
  3. 可以这样做,而不会减慢速度 网站?
  4. 谢谢,

3 个答案:

答案 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);

}

回答我的初步问题:

  1. 如何根据内容检测内容是否具有“不执行任何操作”的值 网址? - 我使用不同的方式过滤需要添加的网址?lang = fr
  2. 如何即时添加'?lang = fr'他们的网址 这些内容? - add_query_arg是关键,因为它允许在网址上添加查询参数...这正是我需要的。
  3. 可以这样做,而不会减慢速度 网站? - 使用此解决方案我有150个额外请求和+16秒加载(测试页面有大约2000个已编辑的网址)。
  4. 有没有办法减少通话次数并改善页面加载?