Wp_sert_post()创建的自定义帖子的多段语言翻译

时间:2016-04-20 作者:Mauro

我有麻烦了。我有一个旅游网站。。。我创建了一个页面,用户可以在其中编写表单来插入他们的房子。

这些房子当然是定制的柱子类型。

这是我的一段代码:

...
some validation here

if ($idarticolo = wp_insert_post($post)) {

    //lingua
    global $polylang;
    $lang = pll_current_language();
    $polylang->set_post_language($idarticolo, $lang);

    ...
一切都很好,房子插入了我现在的语言;但当我试图从管理面板翻译这篇文章时,我遇到了一个错误。

未翻译帖子,未检测到任何语言。

请帮忙!!!。。。非常感谢!

M、 :)

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

显然,Polylang有一个未记录的pll\\u save\\u post API方法。请参见此处:https://wordpress.org/support/topic/programmatically-set-post-language-and-translations

SO网友:Mauro

好的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));
我用意大利语插入帖子,然后用其他语言创建相应的翻译。

再次感谢您的帮助!

M:)

SO网友:Hanafi

使现代化@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.

相关推荐