如何添加对自定义post类型的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中,但没有效果。
发布于 2013-05-07 08:55:20
使用标记非常简单。qTranslate中的所有数据都存储在特殊的<!--:lang-->content<!--:-->标记之间,其中lang是该语言的代码,如en、ru、de等。
post编辑UI是通过qTranslate的重型JavaScript进行更改的。JavaScript分析预置字段的内容并创建新控件。在保存相同的JavaScript之前,相反,合并UI字段并将它们包装到上面的标记中。这种简单的行为可以通过从自定义post类型代码中注入额外的JavaScript来复制,以便将您的自定义字段拆分为您需要的多种语言,然后将它们合并在一起,使用全反式_集成_*、全反式_保存和其他现有的杂乱无章作为您自己代码的指南。
同样,这非常简单--在您的#portfolio_project_roles中使用拆分标记,为每种语言创建#portfolio_project_roles_{lang}文本区域并填充拆分的内容,然后将合并保存回一个#portfolio_project_roles,将每个内容语言有效负载包装到标记中。
保存后,数据库中的自定义post类型元数据将如下所示,例如:"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*函数上。我相信还有其他有趣的方法可以采用,但上面的内容应该为您提供了关于事情如何工作的基本大纲。希望这能有所帮助。
https://wordpress.stackexchange.com/questions/97889
复制相似问题