/**
  * @inheritDoc
  */
 protected function createTermsFromEntry($postId, EntryInterface $entry)
 {
     $ids = parent::createTermsFromEntry($postId, $entry);
     if (!empty($ids) && $this->language && function_exists('pll_set_post_language')) {
         foreach ($ids as $id) {
             pll_set_term_language($is, $this->language);
         }
     }
     return $ids;
 }
 /**
  * Function to create network-wide term in a given site.
  *
  * This function will switch the given blog_id, create the term and then switch back to the current blog.
  *
  * @since    1.0.0
  * @param    string    $blog_id       the id of the blog in which to set the therm.
  */
 protected function create_blog_term($blog_id, $term_name = null, $term_slug = null, $term_description = 'Network-wide -- DO NOT DELETE')
 {
     if (!isset($term_name)) {
         $term_name = $this->term_name;
     }
     if (!isset($term_slug)) {
         $term_slug = $this->term_slug;
     }
     $current_blog_id = get_current_blog_id();
     switch_to_blog($blog_id);
     //let's get the languages used on that site
     $translations = pll_languages_list(array('hide_empty' => 0, 'fields' => 'slug'));
     $language_name = pll_languages_list(array('hide_empty' => 0, 'fields' => 'name'));
     //if we found some languages, let's cache them
     for ($idx = 0; $idx < sizeof($language_name); $idx++) {
         $this->set_language($translations[$idx], $language_name[$idx]);
     }
     //else we assume we are dealing with the default language
     if (empty($translations)) {
         $translations = array($this->default_lang);
         error_log("Warning (Network-wide-posts) No Polylang languages set in blog: " . $blog_id . ", assuming default language (" . $this->default_lang . ")");
     }
     $term_ids = array();
     //term id storage array
     foreach ($translations as $lang) {
         $term_slug = $this->term_slug . "-" . $lang;
         $term_name = $this->term_name . " (" . $lang . ")";
         if ($this->default_lang == $lang) {
             $term_slug = $this->term_slug;
             $term_name = $this->term_name;
         }
         $args = array('description' => $term_description, 'slug' => $term_slug);
         switch (true) {
             case self::AUTOMATIC_TAG === $this->term_type:
                 $taxonomy = 'post_tag';
                 $term = get_term_by('slug', $args['slug'], $taxonomy);
                 if (!$term) {
                     //create tag
                     $term = wp_insert_term($term_name, $taxonomy, $args);
                     if (is_array($term)) {
                         $term_id = $term['term_id'];
                     } else {
                         $term_id = -1;
                     }
                 } else {
                     $term_id = $term->term_id;
                 }
                 //associate the new term with the correct language
                 pll_set_term_language($term_id, $lang);
                 //let's keep a cache for quicker loading.
                 $term_ids[$lang] = $term_id;
                 $this->set_blog_term_id($blog_id, $term_ids);
                 break;
             case self::AUTOMATIC_CAT === $this->term_type:
                 $taxonomy = 'category';
                 $term_ids = array();
                 $term = get_term_by('slug', $args['slug'], $taxonomy);
                 if (!$term) {
                     //create tag
                     $term = wp_insert_term($term_name, $taxonomy, $args);
                     if (is_array($term)) {
                         $term_id = $term['term_id'];
                     } else {
                         $term_id = -1;
                     }
                 } else {
                     $term_id = $term->term_id;
                 }
                 pll_set_term_language($term_id, $lang['slug']);
                 $term_ids[$lang['slug']] = $term_id;
                 $this->set_blog_term_id($blog_id, $term_id);
                 break;
             case self::SELECTED_TAX === $this->term_type:
             default:
                 //TODO, nothing?
                 break;
         }
     }
     //switch back to current blog
     //switch_to_blog($current_blog_id); //back to where we started
     restore_current_blog();
 }