0

who can hellp with this, i need create post from code, by wp_insert_post function, so what is going on: I creating post on each existing laguages, then i update all needed fields and i need to set post term depened of current language.

I have terms (shelters) https://prnt.sc/pklSXojB2jZj - i need that post set to current lang shelter while create, but after creating i got - https://prnt.sc/pz2jFEq1OAMP , 2 posts set in one lang terms. Maybe who know whats goes wrong, below i provided 2 functions who do these actions, Thanks in advance:

function add_pet($form_data, $ready_data, $update_meta = false) {

    $allLang = pll_languages_list();

    if ($allLang) {

        $postsArr = array();

        foreach ($allLang as $lang) {

            //Add new pet
            $post_id = wp_insert_post(array(
                'post_title'    => $form_data['pet_name'],
                'post_status'   => 'publish',
                'post_author'   => $form_data['user_id'],
                'post_type' => 'pets',
            ));

            //Check if post created, update all needed fields, and update post terms (shelter)
            if ($post_id) {
                //Get all translation of term
                $shelter_id = pll_get_term(intval($form_data['shelter']), $lang);
                $update_meta['shelter'] = $shelter_id;
                //In this function we update those terms
                $update_success = update_pets_fields($post_id, $ready_data, $update_meta);

                $postsArr[$lang] = $post_id;
                pll_set_post_language($post_id, $lang);
                $postDate = get_post($post_id)->post_date;
                $unixDate = strtotime($postDate);
                update_post_meta($post_id, 'pet_update_date', $unixDate);
            }
        }
        //Save post translation
        if ($postsArr) {
            pll_save_post_translations($postsArr);
        }

        //Old code 
        // foreach ($allLang as $lang) {
        //  $cat_id = pll_get_term(intval($form_data['kind_of_animal']), $lang);
        //  $shelter_id = pll_get_term(intval($form_data['shelter']), $lang);
        //  $post_id = $postsArr[$lang];

        //  $update_meta['post_category'] = $cat_id;
        //  $update_meta['shelter'] = $shelter_id;

        //  $update_success = update_pets_fields($post_id, $ready_data, $update_meta);
        // }
    }

    if (is_wp_error($post_id)) {
        wp_send_json_error($post_id->get_error_message());
    }


    if ($update_success) {
        wp_send_json_success('Post was created.');
    } else {
        wp_send_json_error('Post was not created.');
    }
}

And function who update field

/Update pets fields
function update_pets_fields($post_id, $data, $update_meta = false) {
    if (!$post_id) return;

    //Update post meta data not acf
    if (isset($update_meta) && !empty($update_meta['title'])) {

        $post_update = array(
            'ID'         => $post_id,
            'post_title' => $update_meta['title']
        );

        $result = wp_update_post($post_update);

        if (is_wp_error($result)) {
            wp_send_json_error('Fields was not updated');
        }
    }

    if (isset($update_meta['shelter']) && !empty($update_meta['shelter']) && intval($update_meta['shelter'])) {

        wp_remove_object_terms($post_id, 'uncategorized', 'sholters');

        $shelter_id = intval($update_meta['shelter']);

        wp_set_post_terms($post_id, array($shelter_id), 'sholters');


        if (is_wp_error($result)) {
            wp_send_json_error('Term not updated');
        }
    }

    if (isset($update_meta['post_category']) && !empty($update_meta['post_category']) && intval($update_meta['post_category'])) {
        wp_remove_object_terms($post_id, 'uncategorized', 'category');


        wp_set_post_categories($post_id, intval($update_meta['post_category']));

        if (is_wp_error($result)) {
            wp_send_json_error('Category not updated');
        }
    }

    if (isset($update_meta['thumbnail']) && !empty($update_meta['thumbnail']) && intval($update_meta['thumbnail'])) {
        set_post_thumbnail($post_id, intval($update_meta['thumbnail']));
    }

    if (is_null($data)) {
        wp_send_json_error('No data.');
    }


    foreach ($data as $field) {

        if ($field[3] === 'where_is') {
            $field_array['field_62169d3cffb5b'] = array(
                $field[2] => $field[1],
            );
        } else {
            $field_array = array(
                $field[2] => $field[1],

            );
        }

        if (!empty($field[1])) {
            $result = update_field('field_621696a7ffb4e', $field_array, $post_id);
        }
    }

    if ($result) {
        return false;
    } else {
        return true;
    }
}

I try update it in diferent variants but it does't work, i check ids that come in args all ids is right and all posts ids is right.But on at the exit we got 2 posts in 1 term

Dio ZX
  • 1

0 Answers0