web-dev-qa-db-fra.com

traduction en polylang d'une publication personnalisée créée par wp_insert_post ()

Je suis dans le pétrin. J'ai un site de voyage ... J'ai créé une page où les utilisateurs peuvent écrire un formulaire pour insérer leurs maisons.

Les maisons sont bien sûr un type de poste personnalisé.

Ceci est une partie de mon code:

...
some validation here

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

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

    ...

tout fonctionne bien, la maison est insérée dans ma langue actuelle; mais lorsque j'essaie de traduire ce message à partir du panneau d'administration, j'obtiens une erreur.

L'article n'est pas traduit et aucune langue n'est détectée.

S'il vous plaît aider !!! ... Merci beaucoup à l'avance!

M. :)

1
Mauro

Apparemment, Polylang a une méthode d’API non documentée pll_save_post. Voir ici: https://wordpress.org/support/topic/programmatically-set-post-language-and-translations

1
RiaanP

Ok Riaan,

merci pour votre réponse.

J'ai résolu de cette façon (peut-être peut-être utile):

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));

J'insère le message en italien, puis je crée les traductions correspondantes dans les autres langues.

Merci encore pour votre aide!

M :)

1
Mauro