function _nxt_ajax_add_hierarchical_term() { $action = $_POST['action']; $taxonomy = get_taxonomy(substr($action, 4)); check_ajax_referer($action, '_ajax_nonce-add-' . $taxonomy->name); if (!current_user_can($taxonomy->cap->edit_terms)) { die('-1'); } $names = explode(',', $_POST['new' . $taxonomy->name]); $parent = isset($_POST['new' . $taxonomy->name . '_parent']) ? (int) $_POST['new' . $taxonomy->name . '_parent'] : 0; if (0 > $parent) { $parent = 0; } if ($taxonomy->name == 'category') { $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); } else { $post_category = isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); } $checked_categories = array_map('absint', (array) $post_category); $popular_ids = nxt_popular_terms_checklist($taxonomy->name, 0, 10, false); foreach ($names as $cat_name) { $cat_name = trim($cat_name); $category_nicename = sanitize_title($cat_name); if ('' === $category_nicename) { continue; } if (!($cat_id = term_exists($cat_name, $taxonomy->name, $parent))) { $new_term = nxt_insert_term($cat_name, $taxonomy->name, array('parent' => $parent)); $cat_id = $new_term['term_id']; } $checked_categories[] = $cat_id; if ($parent) { // Do these all at once in a second continue; } $category = get_term($cat_id, $taxonomy->name); ob_start(); nxt_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); $data = ob_get_contents(); ob_end_clean(); $add = array('what' => $taxonomy->name, 'id' => $cat_id, 'data' => str_replace(array("\n", "\t"), '', $data), 'position' => -1); } if ($parent) { // Foncy - replace the parent and all its children $parent = get_term($parent, $taxonomy->name); $term_id = $parent->term_id; while ($parent->parent) { // get the top parent $parent =& get_term($parent->parent, $taxonomy->name); if (is_nxt_error($parent)) { break; } $term_id = $parent->term_id; } ob_start(); nxt_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); $data = ob_get_contents(); ob_end_clean(); $add = array('what' => $taxonomy->name, 'id' => $term_id, 'data' => str_replace(array("\n", "\t"), '', $data), 'position' => -1); } ob_start(); nxt_dropdown_categories(array('taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new' . $taxonomy->name . '_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $taxonomy->labels->parent_item . ' —')); $sup = ob_get_contents(); ob_end_clean(); $add['supplemental'] = array('newcat_parent' => $sup); $x = new nxt_Ajax_Response($add); $x->send(); }
/** * Display link categories form fields. * * @since 2.6.0 * * @param object $link */ function link_categories_meta_box($link) { ?> <ul id="category-tabs" class="category-tabs"> <li class="tabs"><a href="#categories-all"><?php _e('All Categories'); ?> </a></li> <li class="hide-if-no-js"><a href="#categories-pop"><?php _e('Most Used'); ?> </a></li> </ul> <div id="categories-all" class="tabs-panel"> <ul id="categorychecklist" class="list:category categorychecklist form-no-clear"> <?php if (isset($link->link_id)) { nxt_link_category_checklist($link->link_id); } else { nxt_link_category_checklist(); } ?> </ul> </div> <div id="categories-pop" class="tabs-panel" style="display: none;"> <ul id="categorychecklist-pop" class="categorychecklist form-no-clear"> <?php nxt_popular_terms_checklist('link_category'); ?> </ul> </div> <div id="category-adder" class="nxt-hidden-children"> <h4><a id="category-add-toggle" href="#category-add"><?php _e('+ Add New Category'); ?> </a></h4> <p id="link-category-add" class="nxt-hidden-child"> <label class="screen-reader-text" for="newcat"><?php _e('+ Add New Category'); ?> </label> <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e('New category name'); ?> " aria-required="true" /> <input type="button" id="category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e('Add'); ?> " /> <?php nxt_nonce_field('add-link-category', '_ajax_nonce', false); ?> <span id="category-ajax-response"></span> </p> </div> <?php }