Switch_to_Blog():加载文本域

时间:2015-06-15 作者:luke

我正在使用WordPress多站点功能Multilingual Press Pro 创建带有链接帖子的多语言网站。

在网络激活插件中,注册自定义帖子类型。对于转换段塞,我使用l10n:

\'rewrite\'   => array(
        \'slug\' => __( \'products\', \'text-domain\' ) . \'/%product-category%\',
        \'with_front\' => false
        )
这很好用。但是,要链接到网络中另一个站点上的翻译帖子,switch_to_blog() 已使用。由于在这个函数中没有插件被(重新)加载,我的翻译文件也没有加载,因此我检索的永久链接将是错误的。

Is there any possibility to hook into switch_to_blog() to load another text domain?

谢谢

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

你可以参与行动switch_blog. 这里的第一个参数是新的blog ID。但是在这里加载完整的翻译文件很昂贵,之后还必须恢复旧文件。

WordPress不使用本机gettext函数,但使用一些速度慢得多的自定义代码。看见#17268. 这将导致巨大的性能损失。

在这种情况下,从插件中过滤URLmlp_linked_element_link, 并使用如下硬编码替换列表:

add_filter( \'mlp_linked_element_link\', function( $url, $site_id ) {

    if ( 1 === (int) $site_id )
        return str_replace( \'/produkt/\', \'/product/\', $url );

    if ( 2 === (int) $site_id )
        return str_replace( \'/product/\', \'/produkt/\', $url );

    return $url;

}, 10, 2 );
这要快得多。Permalinks和语言文件处理在多站点中仍然处于中断状态,您必须接受妥协。

结束

相关推荐

使用L10n上下文(_x等)

a的基本l10n。用PoEdit生成的mo文件工作正常。但我一介绍_x, 或者变体,链接会断开,因为尽我所知,PoEdit完全忽略上下文,并且不会生成相应的msgctxt 中的行。采购订单/。mo文件。_x, _ex 和其他变体都添加到关键字和PoEdit中is 查找和分析_x() 源代码中的引用。它只是没有捕获上下文,也没有生成msgctxt 结果中的行。采购订单文件。解决方法是什么(除了手动编辑.po或.pot文件之外,还有其他方法?)