自定义发布类型的QTranslate

时间:2013-05-01 作者:skywind

如何为自定义帖子类型添加qtranslate支持?只需使用标签保存文本或添加标志切换器。

我的自定义帖子类型字段:

add_meta_box(\'project_rolesid\', \'Roles box\', \'project_roles\', \'portfolio\', \'normal\');
<textarea id="portfolio_project_roles" cols="80" rows="7" name="portfolio_project_roles">\'.$roles.\'</textarea>
尝试通过添加线条添加支撑

add_action(\'portfolio_project_roles\',\'qtrans_useCurrentLanguageIfNotFoundShowAvailable\', 0);
在中qtranslate_hooks.php, 但没有效果。

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

使用标记非常简单。qTranslate中的所有数据存储在<!--:lang-->content<!--:--> 标签,其中lang 是语言的代码,如en, ru, de, 等

编辑后的UI通过qTranslate的重JavaScript进行更改。JavaScript解析预设字段的内容并创建新控件。在保存相同的JavaScript之前,将合并UI字段并将其打包到上面的标记中。通过从自定义帖子类型代码中注入额外的JavaScript,将自定义字段拆分为所需的多种语言,然后使用qtrans_integrate_*, qtrans_save 以及其他现有的零碎东西,作为您自己代码的指南。

同样,这非常简单-在#portfolio_project_roles, 为每种语言创建#portfolio_project_roles_{lang} 文本区域并用拆分内容填充,然后保存合并回一个#portfolio_project_roles 将每个内容语言负载包装到标记中。

保存后,数据库中的自定义帖子类型元数据如下所示,例如:"portfolio_roles" => "<!--:en-->Vladimir - Project Lead<!--:--><!--:ru-->Владимир - куратор проекта<!--:-->". 要根据语言显示这些数据块,必须使用qTranslate提供的几个过滤器,主要包括:qtrans_useCurrentLanguageIfNotFoundShowAvailable 诸如此类,甚至qtrans_use 直接地

<div id="content>
    <?php echo qtrans_useCurrentLanguageIfNotFoundShowAvailable(
                get_post_meta( get_the_ID(), \'portfolio_roles\', true ) ) );
    ?>
</div>
这将输出正确的语言分割负载(不要忘记使用esc_html).

更干净的方法是使用meta filter 把它挂在qtrans_use* 功能。我相信还有其他有趣的方法可以采用,但以上应该为您提供事情如何工作的基本轮廓。希望这有帮助。

结束

相关推荐