angelovcom.net

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

edit-tags.php (22452B)


      1 <?php
      2 /**
      3  * Edit Tags Administration Screen.
      4  *
      5  * @package WordPress
      6  * @subpackage Administration
      7  */
      8 
      9 /** WordPress Administration Bootstrap */
     10 require_once __DIR__ . '/admin.php';
     11 
     12 if ( ! $taxnow ) {
     13 	wp_die( __( 'Invalid taxonomy.' ) );
     14 }
     15 
     16 $tax = get_taxonomy( $taxnow );
     17 
     18 if ( ! $tax ) {
     19 	wp_die( __( 'Invalid taxonomy.' ) );
     20 }
     21 
     22 if ( ! in_array( $tax->name, get_taxonomies( array( 'show_ui' => true ) ), true ) ) {
     23 	wp_die( __( 'Sorry, you are not allowed to edit terms in this taxonomy.' ) );
     24 }
     25 
     26 if ( ! current_user_can( $tax->cap->manage_terms ) ) {
     27 	wp_die(
     28 		'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
     29 		'<p>' . __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ) . '</p>',
     30 		403
     31 	);
     32 }
     33 
     34 /**
     35  * $post_type is set when the WP_Terms_List_Table instance is created
     36  *
     37  * @global string $post_type
     38  */
     39 global $post_type;
     40 
     41 $wp_list_table = _get_list_table( 'WP_Terms_List_Table' );
     42 $pagenum       = $wp_list_table->get_pagenum();
     43 
     44 $title = $tax->labels->name;
     45 
     46 if ( 'post' !== $post_type ) {
     47 	$parent_file  = ( 'attachment' === $post_type ) ? 'upload.php' : "edit.php?post_type=$post_type";
     48 	$submenu_file = "edit-tags.php?taxonomy=$taxonomy&amp;post_type=$post_type";
     49 } elseif ( 'link_category' === $tax->name ) {
     50 	$parent_file  = 'link-manager.php';
     51 	$submenu_file = 'edit-tags.php?taxonomy=link_category';
     52 } else {
     53 	$parent_file  = 'edit.php';
     54 	$submenu_file = "edit-tags.php?taxonomy=$taxonomy";
     55 }
     56 
     57 add_screen_option(
     58 	'per_page',
     59 	array(
     60 		'default' => 20,
     61 		'option'  => 'edit_' . $tax->name . '_per_page',
     62 	)
     63 );
     64 
     65 get_current_screen()->set_screen_reader_content(
     66 	array(
     67 		'heading_pagination' => $tax->labels->items_list_navigation,
     68 		'heading_list'       => $tax->labels->items_list,
     69 	)
     70 );
     71 
     72 $location = false;
     73 $referer  = wp_get_referer();
     74 if ( ! $referer ) { // For POST requests.
     75 	$referer = wp_unslash( $_SERVER['REQUEST_URI'] );
     76 }
     77 $referer = remove_query_arg( array( '_wp_http_referer', '_wpnonce', 'error', 'message', 'paged' ), $referer );
     78 switch ( $wp_list_table->current_action() ) {
     79 
     80 	case 'add-tag':
     81 		check_admin_referer( 'add-tag', '_wpnonce_add-tag' );
     82 
     83 		if ( ! current_user_can( $tax->cap->edit_terms ) ) {
     84 			wp_die(
     85 				'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
     86 				'<p>' . __( 'Sorry, you are not allowed to create terms in this taxonomy.' ) . '</p>',
     87 				403
     88 			);
     89 		}
     90 
     91 		$ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST );
     92 		if ( $ret && ! is_wp_error( $ret ) ) {
     93 			$location = add_query_arg( 'message', 1, $referer );
     94 		} else {
     95 			$location = add_query_arg(
     96 				array(
     97 					'error'   => true,
     98 					'message' => 4,
     99 				),
    100 				$referer
    101 			);
    102 		}
    103 
    104 		break;
    105 
    106 	case 'delete':
    107 		if ( ! isset( $_REQUEST['tag_ID'] ) ) {
    108 			break;
    109 		}
    110 
    111 		$tag_ID = (int) $_REQUEST['tag_ID'];
    112 		check_admin_referer( 'delete-tag_' . $tag_ID );
    113 
    114 		if ( ! current_user_can( 'delete_term', $tag_ID ) ) {
    115 			wp_die(
    116 				'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
    117 				'<p>' . __( 'Sorry, you are not allowed to delete this item.' ) . '</p>',
    118 				403
    119 			);
    120 		}
    121 
    122 		wp_delete_term( $tag_ID, $taxonomy );
    123 
    124 		$location = add_query_arg( 'message', 2, $referer );
    125 
    126 		// When deleting a term, prevent the action from redirecting back to a term that no longer exists.
    127 		$location = remove_query_arg( array( 'tag_ID', 'action' ), $location );
    128 
    129 		break;
    130 
    131 	case 'bulk-delete':
    132 		check_admin_referer( 'bulk-tags' );
    133 
    134 		if ( ! current_user_can( $tax->cap->delete_terms ) ) {
    135 			wp_die(
    136 				'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
    137 				'<p>' . __( 'Sorry, you are not allowed to delete these items.' ) . '</p>',
    138 				403
    139 			);
    140 		}
    141 
    142 		$tags = (array) $_REQUEST['delete_tags'];
    143 		foreach ( $tags as $tag_ID ) {
    144 			wp_delete_term( $tag_ID, $taxonomy );
    145 		}
    146 
    147 		$location = add_query_arg( 'message', 6, $referer );
    148 
    149 		break;
    150 
    151 	case 'edit':
    152 		if ( ! isset( $_REQUEST['tag_ID'] ) ) {
    153 			break;
    154 		}
    155 
    156 		$term_id = (int) $_REQUEST['tag_ID'];
    157 		$term    = get_term( $term_id );
    158 
    159 		if ( ! $term instanceof WP_Term ) {
    160 			wp_die( __( 'You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?' ) );
    161 		}
    162 
    163 		wp_redirect( esc_url_raw( get_edit_term_link( $term_id, $taxonomy, $post_type ) ) );
    164 		exit;
    165 
    166 	case 'editedtag':
    167 		$tag_ID = (int) $_POST['tag_ID'];
    168 		check_admin_referer( 'update-tag_' . $tag_ID );
    169 
    170 		if ( ! current_user_can( 'edit_term', $tag_ID ) ) {
    171 			wp_die(
    172 				'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
    173 				'<p>' . __( 'Sorry, you are not allowed to edit this item.' ) . '</p>',
    174 				403
    175 			);
    176 		}
    177 
    178 		$tag = get_term( $tag_ID, $taxonomy );
    179 		if ( ! $tag ) {
    180 			wp_die( __( 'You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?' ) );
    181 		}
    182 
    183 		$ret = wp_update_term( $tag_ID, $taxonomy, $_POST );
    184 
    185 		if ( $ret && ! is_wp_error( $ret ) ) {
    186 			$location = add_query_arg( 'message', 3, $referer );
    187 		} else {
    188 			$location = add_query_arg(
    189 				array(
    190 					'error'   => true,
    191 					'message' => 5,
    192 				),
    193 				$referer
    194 			);
    195 		}
    196 		break;
    197 	default:
    198 		if ( ! $wp_list_table->current_action() || ! isset( $_REQUEST['delete_tags'] ) ) {
    199 			break;
    200 		}
    201 		check_admin_referer( 'bulk-tags' );
    202 
    203 		$screen = get_current_screen()->id;
    204 		$tags   = (array) $_REQUEST['delete_tags'];
    205 
    206 		/** This action is documented in wp-admin/edit.php */
    207 		$location = apply_filters( "handle_bulk_actions-{$screen}", $location, $wp_list_table->current_action(), $tags ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
    208 		break;
    209 }
    210 
    211 if ( ! $location && ! empty( $_REQUEST['_wp_http_referer'] ) ) {
    212 	$location = remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) );
    213 }
    214 
    215 if ( $location ) {
    216 	if ( $pagenum > 1 ) {
    217 		$location = add_query_arg( 'paged', $pagenum, $location ); // $pagenum takes care of $total_pages.
    218 	}
    219 
    220 	/**
    221 	 * Filters the taxonomy redirect destination URL.
    222 	 *
    223 	 * @since 4.6.0
    224 	 *
    225 	 * @param string      $location The destination URL.
    226 	 * @param WP_Taxonomy $tax      The taxonomy object.
    227 	 */
    228 	wp_redirect( apply_filters( 'redirect_term_location', $location, $tax ) );
    229 	exit;
    230 }
    231 
    232 $wp_list_table->prepare_items();
    233 $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
    234 
    235 if ( $pagenum > $total_pages && $total_pages > 0 ) {
    236 	wp_redirect( add_query_arg( 'paged', $total_pages ) );
    237 	exit;
    238 }
    239 
    240 wp_enqueue_script( 'admin-tags' );
    241 if ( current_user_can( $tax->cap->edit_terms ) ) {
    242 	wp_enqueue_script( 'inline-edit-tax' );
    243 }
    244 
    245 if ( 'category' === $taxonomy || 'link_category' === $taxonomy || 'post_tag' === $taxonomy ) {
    246 	$help = '';
    247 	if ( 'category' === $taxonomy ) {
    248 		$help = '<p>' . sprintf(
    249 			/* translators: %s: URL to Writing Settings screen. */
    250 			__( 'You can use categories to define sections of your site and group related posts. The default category is &#8220;Uncategorized&#8221; until you change it in your <a href="%s">writing settings</a>.' ),
    251 			'options-writing.php'
    252 		) . '</p>';
    253 	} elseif ( 'link_category' === $taxonomy ) {
    254 		$help = '<p>' . __( 'You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.' ) . '</p>';
    255 	} else {
    256 		$help = '<p>' . __( 'You can assign keywords to your posts using <strong>tags</strong>. Unlike categories, tags have no hierarchy, meaning there&#8217;s no relationship from one tag to another.' ) . '</p>';
    257 	}
    258 
    259 	if ( 'link_category' === $taxonomy ) {
    260 		$help .= '<p>' . __( 'You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '</p>';
    261 	} else {
    262 		$help .= '<p>' . __( 'What&#8217;s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '</p>';
    263 	}
    264 
    265 	get_current_screen()->add_help_tab(
    266 		array(
    267 			'id'      => 'overview',
    268 			'title'   => __( 'Overview' ),
    269 			'content' => $help,
    270 		)
    271 	);
    272 
    273 	if ( 'category' === $taxonomy || 'post_tag' === $taxonomy ) {
    274 		if ( 'category' === $taxonomy ) {
    275 			$help = '<p>' . __( 'When adding a new category on this screen, you&#8217;ll fill in the following fields:' ) . '</p>';
    276 		} else {
    277 			$help = '<p>' . __( 'When adding a new tag on this screen, you&#8217;ll fill in the following fields:' ) . '</p>';
    278 		}
    279 
    280 		$help .= '<ul>' .
    281 		'<li>' . __( '<strong>Name</strong> &mdash; The name is how it appears on your site.' ) . '</li>';
    282 
    283 		if ( ! global_terms_enabled() ) {
    284 			$help .= '<li>' . __( '<strong>Slug</strong> &mdash; The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '</li>';
    285 		}
    286 
    287 		if ( 'category' === $taxonomy ) {
    288 			$help .= '<li>' . __( '<strong>Parent</strong> &mdash; Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '</li>';
    289 		}
    290 
    291 		$help .= '<li>' . __( '<strong>Description</strong> &mdash; The description is not prominent by default; however, some themes may display it.' ) . '</li>' .
    292 		'</ul>' .
    293 		'<p>' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '</p>';
    294 
    295 		get_current_screen()->add_help_tab(
    296 			array(
    297 				'id'      => 'adding-terms',
    298 				'title'   => 'category' === $taxonomy ? __( 'Adding Categories' ) : __( 'Adding Tags' ),
    299 				'content' => $help,
    300 			)
    301 		);
    302 	}
    303 
    304 	$help = '<p><strong>' . __( 'For more information:' ) . '</strong></p>';
    305 
    306 	if ( 'category' === $taxonomy ) {
    307 		$help .= '<p>' . __( '<a href="https://wordpress.org/support/article/posts-categories-screen/">Documentation on Categories</a>' ) . '</p>';
    308 	} elseif ( 'link_category' === $taxonomy ) {
    309 		$help .= '<p>' . __( '<a href="https://codex.wordpress.org/Links_Link_Categories_Screen">Documentation on Link Categories</a>' ) . '</p>';
    310 	} else {
    311 		$help .= '<p>' . __( '<a href="https://wordpress.org/support/article/posts-tags-screen/">Documentation on Tags</a>' ) . '</p>';
    312 	}
    313 
    314 	$help .= '<p>' . __( '<a href="https://wordpress.org/support/">Support</a>' ) . '</p>';
    315 
    316 	get_current_screen()->set_help_sidebar( $help );
    317 
    318 	unset( $help );
    319 }
    320 
    321 require_once ABSPATH . 'wp-admin/admin-header.php';
    322 
    323 // Also used by the Edit Tag form.
    324 require_once ABSPATH . 'wp-admin/includes/edit-tag-messages.php';
    325 
    326 $class = ( isset( $_REQUEST['error'] ) ) ? 'error' : 'updated';
    327 
    328 if ( is_plugin_active( 'wpcat2tag-importer/wpcat2tag-importer.php' ) ) {
    329 	$import_link = admin_url( 'admin.php?import=wpcat2tag' );
    330 } else {
    331 	$import_link = admin_url( 'import.php' );
    332 }
    333 
    334 ?>
    335 
    336 <div class="wrap nosubsub">
    337 <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1>
    338 
    339 <?php
    340 if ( isset( $_REQUEST['s'] ) && strlen( $_REQUEST['s'] ) ) {
    341 	echo '<span class="subtitle">';
    342 	printf(
    343 		/* translators: %s: Search query. */
    344 		__( 'Search results for: %s' ),
    345 		'<strong>' . esc_html( wp_unslash( $_REQUEST['s'] ) ) . '</strong>'
    346 	);
    347 	echo '</span>';
    348 }
    349 ?>
    350 
    351 <hr class="wp-header-end">
    352 
    353 <?php if ( $message ) : ?>
    354 <div id="message" class="<?php echo $class; ?> notice is-dismissible"><p><?php echo $message; ?></p></div>
    355 	<?php
    356 	$_SERVER['REQUEST_URI'] = remove_query_arg( array( 'message', 'error' ), $_SERVER['REQUEST_URI'] );
    357 endif;
    358 ?>
    359 <div id="ajax-response"></div>
    360 
    361 <form class="search-form wp-clearfix" method="get">
    362 <input type="hidden" name="taxonomy" value="<?php echo esc_attr( $taxonomy ); ?>" />
    363 <input type="hidden" name="post_type" value="<?php echo esc_attr( $post_type ); ?>" />
    364 
    365 <?php $wp_list_table->search_box( $tax->labels->search_items, 'tag' ); ?>
    366 
    367 </form>
    368 
    369 <?php
    370 $can_edit_terms = current_user_can( $tax->cap->edit_terms );
    371 
    372 if ( $can_edit_terms ) {
    373 	?>
    374 <div id="col-container" class="wp-clearfix">
    375 
    376 <div id="col-left">
    377 <div class="col-wrap">
    378 
    379 	<?php
    380 	if ( 'category' === $taxonomy ) {
    381 		/**
    382 		 * Fires before the Add Category form.
    383 		 *
    384 		 * @since 2.1.0
    385 		 * @deprecated 3.0.0 Use {@see '{$taxonomy}_pre_add_form'} instead.
    386 		 *
    387 		 * @param object $arg Optional arguments cast to an object.
    388 		 */
    389 		do_action_deprecated( 'add_category_form_pre', array( (object) array( 'parent' => 0 ) ), '3.0.0', '{$taxonomy}_pre_add_form' );
    390 	} elseif ( 'link_category' === $taxonomy ) {
    391 		/**
    392 		 * Fires before the link category form.
    393 		 *
    394 		 * @since 2.3.0
    395 		 * @deprecated 3.0.0 Use {@see '{$taxonomy}_pre_add_form'} instead.
    396 		 *
    397 		 * @param object $arg Optional arguments cast to an object.
    398 		 */
    399 		do_action_deprecated( 'add_link_category_form_pre', array( (object) array( 'parent' => 0 ) ), '3.0.0', '{$taxonomy}_pre_add_form' );
    400 	} else {
    401 		/**
    402 		 * Fires before the Add Tag form.
    403 		 *
    404 		 * @since 2.5.0
    405 		 * @deprecated 3.0.0 Use {@see '{$taxonomy}_pre_add_form'} instead.
    406 		 *
    407 		 * @param string $taxonomy The taxonomy slug.
    408 		 */
    409 		do_action_deprecated( 'add_tag_form_pre', array( $taxonomy ), '3.0.0', '{$taxonomy}_pre_add_form' );
    410 	}
    411 
    412 	/**
    413 	 * Fires before the Add Term form for all taxonomies.
    414 	 *
    415 	 * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
    416 	 *
    417 	 * Possible hook names include:
    418 	 *
    419 	 *  - `category_pre_add_form`
    420 	 *  - `post_tag_pre_add_form`
    421 	 *
    422 	 * @since 3.0.0
    423 	 *
    424 	 * @param string $taxonomy The taxonomy slug.
    425 	 */
    426 	do_action( "{$taxonomy}_pre_add_form", $taxonomy );
    427 	?>
    428 
    429 <div class="form-wrap">
    430 <h2><?php echo $tax->labels->add_new_item; ?></h2>
    431 <form id="addtag" method="post" action="edit-tags.php" class="validate"
    432 	<?php
    433 	/**
    434 	 * Fires inside the Add Tag form tag.
    435 	 *
    436 	 * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
    437 	 *
    438 	 * Possible hook names include:
    439 	 *
    440 	 *  - `category_term_new_form_tag`
    441 	 *  - `post_tag_term_new_form_tag`
    442 	 *
    443 	 * @since 3.7.0
    444 	 */
    445 	do_action( "{$taxonomy}_term_new_form_tag" );
    446 	?>
    447 >
    448 <input type="hidden" name="action" value="add-tag" />
    449 <input type="hidden" name="screen" value="<?php echo esc_attr( $current_screen->id ); ?>" />
    450 <input type="hidden" name="taxonomy" value="<?php echo esc_attr( $taxonomy ); ?>" />
    451 <input type="hidden" name="post_type" value="<?php echo esc_attr( $post_type ); ?>" />
    452 	<?php wp_nonce_field( 'add-tag', '_wpnonce_add-tag' ); ?>
    453 
    454 <div class="form-field form-required term-name-wrap">
    455 	<label for="tag-name"><?php _ex( 'Name', 'term name' ); ?></label>
    456 	<input name="tag-name" id="tag-name" type="text" value="" size="40" aria-required="true" />
    457 	<p><?php _e( 'The name is how it appears on your site.' ); ?></p>
    458 </div>
    459 	<?php if ( ! global_terms_enabled() ) : ?>
    460 <div class="form-field term-slug-wrap">
    461 	<label for="tag-slug"><?php _e( 'Slug' ); ?></label>
    462 	<input name="slug" id="tag-slug" type="text" value="" size="40" />
    463 	<p><?php _e( 'The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ); ?></p>
    464 </div>
    465 <?php endif; // global_terms_enabled() ?>
    466 	<?php if ( is_taxonomy_hierarchical( $taxonomy ) ) : ?>
    467 <div class="form-field term-parent-wrap">
    468 	<label for="parent"><?php echo esc_html( $tax->labels->parent_item ); ?></label>
    469 		<?php
    470 		$dropdown_args = array(
    471 			'hide_empty'       => 0,
    472 			'hide_if_empty'    => false,
    473 			'taxonomy'         => $taxonomy,
    474 			'name'             => 'parent',
    475 			'orderby'          => 'name',
    476 			'hierarchical'     => true,
    477 			'show_option_none' => __( 'None' ),
    478 		);
    479 
    480 		/**
    481 		 * Filters the taxonomy parent drop-down on the Edit Term page.
    482 		 *
    483 		 * @since 3.7.0
    484 		 * @since 4.2.0 Added `$context` parameter.
    485 		 *
    486 		 * @param array  $dropdown_args {
    487 		 *     An array of taxonomy parent drop-down arguments.
    488 		 *
    489 		 *     @type int|bool $hide_empty       Whether to hide terms not attached to any posts. Default 0|false.
    490 		 *     @type bool     $hide_if_empty    Whether to hide the drop-down if no terms exist. Default false.
    491 		 *     @type string   $taxonomy         The taxonomy slug.
    492 		 *     @type string   $name             Value of the name attribute to use for the drop-down select element.
    493 		 *                                      Default 'parent'.
    494 		 *     @type string   $orderby          The field to order by. Default 'name'.
    495 		 *     @type bool     $hierarchical     Whether the taxonomy is hierarchical. Default true.
    496 		 *     @type string   $show_option_none Label to display if there are no terms. Default 'None'.
    497 		 * }
    498 		 * @param string $taxonomy The taxonomy slug.
    499 		 * @param string $context  Filter context. Accepts 'new' or 'edit'.
    500 		 */
    501 		$dropdown_args = apply_filters( 'taxonomy_parent_dropdown_args', $dropdown_args, $taxonomy, 'new' );
    502 
    503 		wp_dropdown_categories( $dropdown_args );
    504 		?>
    505 		<?php if ( 'category' === $taxonomy ) : ?>
    506 		<p><?php _e( 'Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.' ); ?></p>
    507 	<?php else : ?>
    508 		<p><?php _e( 'Assign a parent term to create a hierarchy. The term Jazz, for example, would be the parent of Bebop and Big Band.' ); ?></p>
    509 	<?php endif; ?>
    510 </div>
    511 	<?php endif; // is_taxonomy_hierarchical() ?>
    512 <div class="form-field term-description-wrap">
    513 	<label for="tag-description"><?php _e( 'Description' ); ?></label>
    514 	<textarea name="description" id="tag-description" rows="5" cols="40"></textarea>
    515 	<p><?php _e( 'The description is not prominent by default; however, some themes may show it.' ); ?></p>
    516 </div>
    517 
    518 	<?php
    519 	if ( ! is_taxonomy_hierarchical( $taxonomy ) ) {
    520 		/**
    521 		 * Fires after the Add Tag form fields for non-hierarchical taxonomies.
    522 		 *
    523 		 * @since 3.0.0
    524 		 *
    525 		 * @param string $taxonomy The taxonomy slug.
    526 		 */
    527 		do_action( 'add_tag_form_fields', $taxonomy );
    528 	}
    529 
    530 	/**
    531 	 * Fires after the Add Term form fields.
    532 	 *
    533 	 * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
    534 	 *
    535 	 * Possible hook names include:
    536 	 *
    537 	 *  - `category_add_form_fields`
    538 	 *  - `post_tag_add_form_fields`
    539 	 *
    540 	 * @since 3.0.0
    541 	 *
    542 	 * @param string $taxonomy The taxonomy slug.
    543 	 */
    544 	do_action( "{$taxonomy}_add_form_fields", $taxonomy );
    545 	?>
    546 	<p class="submit">
    547 		<?php submit_button( $tax->labels->add_new_item, 'primary', 'submit', false ); ?>
    548 		<span class="spinner"></span>
    549 	</p>
    550 	<?php
    551 	if ( 'category' === $taxonomy ) {
    552 		/**
    553 		 * Fires at the end of the Edit Category form.
    554 		 *
    555 		 * @since 2.1.0
    556 		 * @deprecated 3.0.0 Use {@see '{$taxonomy}_add_form'} instead.
    557 		 *
    558 		 * @param object $arg Optional arguments cast to an object.
    559 		 */
    560 		do_action_deprecated( 'edit_category_form', array( (object) array( 'parent' => 0 ) ), '3.0.0', '{$taxonomy}_add_form' );
    561 	} elseif ( 'link_category' === $taxonomy ) {
    562 		/**
    563 		 * Fires at the end of the Edit Link form.
    564 		 *
    565 		 * @since 2.3.0
    566 		 * @deprecated 3.0.0 Use {@see '{$taxonomy}_add_form'} instead.
    567 		 *
    568 		 * @param object $arg Optional arguments cast to an object.
    569 		 */
    570 		do_action_deprecated( 'edit_link_category_form', array( (object) array( 'parent' => 0 ) ), '3.0.0', '{$taxonomy}_add_form' );
    571 	} else {
    572 		/**
    573 		 * Fires at the end of the Add Tag form.
    574 		 *
    575 		 * @since 2.7.0
    576 		 * @deprecated 3.0.0 Use {@see '{$taxonomy}_add_form'} instead.
    577 		 *
    578 		 * @param string $taxonomy The taxonomy slug.
    579 		 */
    580 		do_action_deprecated( 'add_tag_form', array( $taxonomy ), '3.0.0', '{$taxonomy}_add_form' );
    581 	}
    582 
    583 	/**
    584 	 * Fires at the end of the Add Term form for all taxonomies.
    585 	 *
    586 	 * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
    587 	 *
    588 	 * Possible hook names include:
    589 	 *
    590 	 *  - `category_add_form`
    591 	 *  - `post_tag_add_form`
    592 	 *
    593 	 * @since 3.0.0
    594 	 *
    595 	 * @param string $taxonomy The taxonomy slug.
    596 	 */
    597 	do_action( "{$taxonomy}_add_form", $taxonomy );
    598 	?>
    599 </form></div>
    600 </div>
    601 </div><!-- /col-left -->
    602 
    603 <div id="col-right">
    604 <div class="col-wrap">
    605 <?php } ?>
    606 
    607 <?php $wp_list_table->views(); ?>
    608 
    609 <form id="posts-filter" method="post">
    610 <input type="hidden" name="taxonomy" value="<?php echo esc_attr( $taxonomy ); ?>" />
    611 <input type="hidden" name="post_type" value="<?php echo esc_attr( $post_type ); ?>" />
    612 
    613 <?php $wp_list_table->display(); ?>
    614 
    615 </form>
    616 
    617 <?php if ( 'category' === $taxonomy ) : ?>
    618 <div class="form-wrap edit-term-notes">
    619 <p>
    620 	<?php
    621 	printf(
    622 		/* translators: %s: Default category. */
    623 		__( 'Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the default category %s. The default category cannot be deleted.' ),
    624 		/** This filter is documented in wp-includes/category-template.php */
    625 		'<strong>' . apply_filters( 'the_category', get_cat_name( get_option( 'default_category' ) ), '', '' ) . '</strong>'
    626 	);
    627 	?>
    628 </p>
    629 	<?php if ( current_user_can( 'import' ) ) : ?>
    630 	<p>
    631 		<?php
    632 		printf(
    633 			/* translators: %s: URL to Categories to Tags Converter tool. */
    634 			__( 'Categories can be selectively converted to tags using the <a href="%s">category to tag converter</a>.' ),
    635 			esc_url( $import_link )
    636 		);
    637 		?>
    638 	</p>
    639 	<?php endif; ?>
    640 </div>
    641 <?php elseif ( 'post_tag' === $taxonomy && current_user_can( 'import' ) ) : ?>
    642 <div class="form-wrap edit-term-notes">
    643 <p>
    644 	<?php
    645 	printf(
    646 		/* translators: %s: URL to Categories to Tags Converter tool. */
    647 		__( 'Tags can be selectively converted to categories using the <a href="%s">tag to category converter</a>.' ),
    648 		esc_url( $import_link )
    649 	);
    650 	?>
    651 	</p>
    652 </div>
    653 	<?php
    654 endif;
    655 
    656 /**
    657  * Fires after the taxonomy list table.
    658  *
    659  * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
    660  *
    661  * Possible hook names include:
    662  *
    663  *  - `after-category-table`
    664  *  - `after-post_tag-table`
    665  *
    666  * @since 3.0.0
    667  *
    668  * @param string $taxonomy The taxonomy name.
    669  */
    670 do_action( "after-{$taxonomy}-table", $taxonomy );  // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
    671 
    672 if ( $can_edit_terms ) {
    673 	?>
    674 </div>
    675 </div><!-- /col-right -->
    676 
    677 </div><!-- /col-container -->
    678 <?php } ?>
    679 
    680 </div><!-- /wrap -->
    681 
    682 <?php if ( ! wp_is_mobile() ) : ?>
    683 <script type="text/javascript">
    684 try{document.forms.addtag['tag-name'].focus();}catch(e){}
    685 </script>
    686 	<?php
    687 endif;
    688 
    689 $wp_list_table->inline_edit();
    690 
    691 require_once ABSPATH . 'wp-admin/admin-footer.php';