Thanks @thread. Here is the code to save post.
public function save(): bool
{
global $wpdb; // Добавьте эту строку в начало функции, если она еще не добавлена
// Проверяем, существует ли уже запись с таким же onlyfans_url.
if ($this->onlyfans_url) {
$existing_id = $wpdb->get_var($wpdb->prepare(
"SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'onlyfans_url' AND meta_value = %s LIMIT 1",
$this->onlyfans_url
));
// Если запись с таким URL уже существует, не создаем новый пост и возвращаем false.
if ($existing_id) {
return false;
}
}
$success = false;
if (0 === $this->id) {
$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;
}
// Получаем ID категории 'United States'
$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;
// Убедитесь, что у нас есть действительный ID категории
if ($united_states_term_id) {
// Назначаем эту категорию посту
wp_set_post_categories($this->id, [$united_states_term_id], true);
}
// Удаление категории 'Uncategorized', если она присвоена
$uncategorized_term_id = get_option('default_category'); // ID категории 'Uncategorized' обычно установлено как категория по умолчанию в WordPress
// Получаем существующие категории поста
$current_categories = wp_get_post_categories($this->id);
// Удаляем 'Uncategorized' из текущих категорий, если он там есть
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);
}
}
} else {
$result = wp_update_post(
array(
'ID' => $this->id,
'meta_input' => $this->to_meta_array(),
)
);
if (!is_wp_error($result) && $result !== 0) {
$success = true;
}
}
return $success;
}
Is it possible to get ‘post_id’ in your below code ?
add_action( 'wp_ajax_start_parsing', 'custom_function' );
function custom_function() {
var_dump($_POST['category_fans']);
// ..
}
Thanks.