وردپرس
Insert Tag in WordPress Post
I have below code.
$args = array(
'post_title' => $this->h1,
'post_content' => $this->profile_text,
'post_status' => 'publish',
'post_type' => 'post',
'meta_input' => $this->to_meta_array(),
);
$post_id = wp_insert_post( $args );
if ( ! is_wp_error( $post_id ) ) {
$this->id = $post_id;
$success = true;
}
$united_states_term = term_exists('United States', 'category');
if (!$united_states_term) {
$united_states_term = wp_insert_term('United States', 'category');
}
$united_states_term_id = $united_states_term['term_id'] ?? null;
if ($united_states_term_id) {
// Назначаем эту категорию посту
wp_set_post_categories($this->id, [$united_states_term_id], true);
}
$uncategorized_term_id = get_option('default_category');
$current_categories = wp_get_post_categories($this->id);
if (($key = array_search($uncategorized_term_id, $current_categories)) !== false) {
unset($current_categories[$key]);
}
wp_set_post_categories($this->id, $current_categories);
// added tags.
if ( 0 !== $this->id ) {
// get country category.
$country_term = get_term_by( 'slug', 'country', 'category' );
if ( $country_term ) {
$country_term_id = $country_term->term_id;
} else {
$country_term = wp_insert_term( 'Country', 'category', array( 'slug' => 'country' ) );
$country_term_id = $country_term['term_id'];
}
$tags = array();
$categories = array();
foreach ( $this->tags as $tag ) {
// insert new term.
if ( $tag['is_country'] ) {
// check exists tag.
$term = get_term_by( 'slug', $tag['slug'], 'category' );
// add country category.
$categories[] = $country_term_id;
if ( $term ) {
$categories[] = $term->term_id;
continue;
}
$new_term = wp_insert_term(
$tag['name'],
'category',
array(
'slug' => $tag['slug'],
'parent' => $country_term_id,
)
);
if ( ! is_wp_error( $new_term ) ) {
$categories[] = $new_term['term_id'];
}
} else {
// check exists tag.
$term = get_term_by( 'slug', $tag['slug'], 'post_tag' );
if ( $term ) {
$tags[] = $tag['slug'];
continue;
}
$new_term = wp_insert_term( $tag['name'], 'post_tag', array( 'slug' => $tag['slug'] ) );
if ( ! is_wp_error( $new_term ) ) {
$tags[] = $tag['slug'];
}
}
}
// unique value in array.
$tags = array_unique( $tags );
$categories = array_unique( $categories );
if ( ! empty( $tags ) ) {
wp_set_post_tags( $this->id, $tags, false );
}
if ( ! empty( $categories ) ) {
wp_set_post_categories( $this->id, $categories, false );
}
}
This code is inserting Post Tags 2 times.
How can I insert Tag only once ?
مشاهده پاسخ های این مطلب
———————————————
این مطلب از سایت انجمن وردپرس گردآوری شده است و کلیه حقوق مطلق به انجمن وردپرس می باشد در صورت مغایرت و یا بروز مشکل اطلاع دهید تا حذف گردد
منبع: انجمن وردپرس