私は困っています。私は旅行サイトを持っています...私はユーザーが彼らの家を挿入するためのフォームを書くことができるページを作成しました。
家はもちろんカスタムポストタイプです。
これは私のコードの一部です:
...
some validation here
if ($idarticolo = wp_insert_post($post)) {
//lingua
global $polylang;
$lang = pll_current_language();
$polylang->set_post_language($idarticolo, $lang);
...
家は私の現在の言語で挿入されています。しかし、私は管理者パネルからこの記事を翻訳しようとすると、私はエラーが出ます。
投稿は翻訳されておらず、言語は検出されません。
助けてください!!! ...事前にどうもありがとう!
M. :)
どうやらPolylangは文書化されていないpll_save_post APIメソッドを持っています。ここを参照してください: https://wordpress.org/support/topic/programmatic-set-post-language-and-translations
Ok Riaan、
お返事ありがとうございます。
私はこのようにして解決しました(おそらく役に立つかもしれません):
if ($idarticolo = wp_insert_post($post, true)) {
// inserisco l'articolo nelle altre lingue: En Es Fr
$idarticoloEn = wp_insert_post($post, true);
$idarticoloEs = wp_insert_post($post, true);
$idarticoloFr = wp_insert_post($post, true);
$polylang->model->set_post_language($idarticolo, 'it');
$polylang->model->set_post_language($idarticoloEn, 'en');
$polylang->model->set_post_language($idarticoloEs, 'es');
$polylang->model->set_post_language($idarticoloFr, 'fr');
$polylang->model->save_translations('post', $idarticolo, array('en' => $idarticoloEn));
$polylang->model->save_translations('post', $idarticolo, array('es' => $idarticoloEs));
$polylang->model->save_translations('post', $idarticolo, array('fr' => $idarticoloFr));
私はイタリア語で投稿を挿入してから、他の言語で対応する翻訳を作成します。
ご協力ありがとうございます。
母:)
@ Mauro's answer ベースのPolylangバージョン2.5.3を更新。
....
if ($idarticolo = wp_insert_post($post, true)) {
$posts = array(
'en' => '',
'es' => '',
'fr' => '',
);
// inserisco l'articolo nelle altre lingue: En Es Fr
foreach ($posts as $language => $value) {
$posts[$language] = wp_insert_post($post, true);
}
if (function_exists('pll_set_post_language')
&& function_exists('pll_save_post_translations')) {
pll_set_post_language($idarticolo, 'it');
foreach ($posts as $language => $value) {
pll_set_post_language($value, $language);
}
pll_save_post_translations(array_merge(array($idarticolo), $posts));
}
....
言語を設定するにはpll_set_term_language
を使います。
用語の翻訳を保存するにはpll_save_term_translations
を使います。