WordPress Version: 4.7
/**
* Ajax handler for adding a link category.
*
* @since 3.1.0
*
* @param string $action Action to perform.
*/
function wp_ajax_add_link_category($action)
{
if (empty($action)) {
$action = 'add-link-category';
}
check_ajax_referer($action);
$tax = get_taxonomy('link_category');
if (!current_user_can($tax->cap->manage_terms)) {
wp_die(-1);
}
$names = explode(',', wp_unslash($_POST['newcat']));
$x = new WP_Ajax_Response();
foreach ($names as $cat_name) {
$cat_name = trim($cat_name);
$slug = sanitize_title($cat_name);
if ('' === $slug) {
continue;
}
if (!$cat_id = term_exists($cat_name, 'link_category')) {
$cat_id = wp_insert_term($cat_name, 'link_category');
}
if (is_wp_error($cat_id)) {
continue;
} elseif (is_array($cat_id)) {
$cat_id = $cat_id['term_id'];
}
$cat_name = esc_html($cat_name);
$x->add(array('what' => 'link-category', 'id' => $cat_id, 'data' => "<li id='link-category-{$cat_id}'><label for='in-link-category-{$cat_id}' class='selectit'><input value='" . esc_attr($cat_id) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-{$cat_id}'/> {$cat_name}</label></li>", 'position' => -1));
}
$x->send();
}