2008-01-25 20:29:01 +01:00
< ? php
2008-08-16 09:27:34 +02:00
/**
2011-04-28 17:24:49 +02:00
* Edit Tags Administration Screen .
2008-08-16 09:27:34 +02:00
*
* @ package WordPress
* @ subpackage Administration
*/
/** WordPress Administration Bootstrap */
2013-09-25 02:18:11 +02:00
require_once ( dirname ( __FILE__ ) . '/admin.php' );
2011-10-13 20:55:40 +02:00
2011-11-11 16:44:16 +01:00
if ( ! $taxnow )
2016-07-17 18:15:34 +02:00
wp_die ( __ ( 'Invalid taxonomy.' ) );
2011-10-13 20:55:40 +02:00
2011-11-11 16:44:16 +01:00
$tax = get_taxonomy ( $taxnow );
2011-10-13 20:55:40 +02:00
if ( ! $tax )
2016-07-17 18:15:34 +02:00
wp_die ( __ ( 'Invalid taxonomy.' ) );
2011-10-13 20:55:40 +02:00
2015-09-20 19:11:25 +02:00
if ( ! in_array ( $tax -> name , get_taxonomies ( array ( 'show_ui' => true ) ) ) ) {
2017-11-27 00:57:55 +01:00
wp_die ( __ ( 'Sorry, you are not allowed to edit terms in this taxonomy.' ) );
2015-09-20 19:11:25 +02:00
}
2015-09-02 18:06:21 +02:00
if ( ! current_user_can ( $tax -> cap -> manage_terms ) ) {
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
2016-11-19 02:38:31 +01:00
'<p>' . __ ( 'Sorry, you are not allowed to manage terms in this taxonomy.' ) . '</p>' ,
2015-09-02 18:06:21 +02:00
403
);
}
2010-11-17 19:47:34 +01:00
2015-05-28 23:41:30 +02:00
/**
* $post_type is set when the WP_Terms_List_Table instance is created
*
* @ global string $post_type
*/
2015-01-10 06:29:22 +01:00
global $post_type ;
2011-01-16 22:47:24 +01:00
$wp_list_table = _get_list_table ( 'WP_Terms_List_Table' );
2011-01-25 20:20:20 +01:00
$pagenum = $wp_list_table -> get_pagenum ();
2010-07-18 15:53:58 +02:00
2010-05-14 02:34:04 +02:00
$title = $tax -> labels -> name ;
2010-01-26 13:13:24 +01:00
2010-01-04 17:58:43 +01:00
if ( 'post' != $post_type ) {
2012-09-22 00:52:54 +02:00
$parent_file = ( 'attachment' == $post_type ) ? 'upload.php' : " edit.php?post_type= $post_type " ;
2010-01-10 02:24:56 +01:00
$submenu_file = " edit-tags.php?taxonomy= $taxonomy &post_type= $post_type " ;
2015-01-08 08:05:25 +01:00
} elseif ( 'link_category' == $tax -> name ) {
2010-12-18 17:48:20 +01:00
$parent_file = 'link-manager.php' ;
$submenu_file = 'edit-tags.php?taxonomy=link_category' ;
2010-01-04 17:58:43 +01:00
} else {
$parent_file = 'edit.php' ;
2010-01-15 23:11:12 +01:00
$submenu_file = " edit-tags.php?taxonomy= $taxonomy " ;
2010-01-04 17:58:43 +01:00
}
2009-02-14 03:37:10 +01:00
2015-03-10 16:32:27 +01:00
add_screen_option ( 'per_page' , array ( 'default' => 20 , 'option' => 'edit_' . $tax -> name . '_per_page' ) );
2011-10-02 08:59:36 +02:00
2015-10-07 03:28:25 +02:00
get_current_screen () -> set_screen_reader_content ( array (
2015-10-23 18:48:25 +02:00
'heading_pagination' => $tax -> labels -> items_list_navigation ,
'heading_list' => $tax -> labels -> items_list ,
2015-10-07 03:28:25 +02:00
) );
2014-09-29 06:54:16 +02:00
$location = false ;
2015-09-15 17:59:42 +02:00
$referer = wp_get_referer ();
2016-10-07 21:39:29 +02:00
if ( ! $referer ) { // For POST requests.
$referer = wp_unslash ( $_SERVER [ 'REQUEST_URI' ] );
}
2016-10-07 22:06:28 +02:00
$referer = remove_query_arg ( array ( '_wp_http_referer' , '_wpnonce' , 'error' , 'message' , 'paged' ), $referer );
2010-09-22 02:10:39 +02:00
switch ( $wp_list_table -> current_action () ) {
2008-01-25 20:29:01 +01:00
2009-12-18 07:30:16 +01:00
case 'add-tag' :
2011-05-24 01:33:30 +02:00
check_admin_referer ( 'add-tag' , '_wpnonce_add-tag' );
2008-01-25 20:29:01 +01:00
2015-09-02 18:06:21 +02:00
if ( ! current_user_can ( $tax -> cap -> edit_terms ) ) {
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
2016-11-19 02:38:31 +01:00
'<p>' . __ ( 'Sorry, you are not allowed to create terms in this taxonomy.' ) . '</p>' ,
2015-09-02 18:06:21 +02:00
403
);
}
2008-01-25 20:29:01 +01:00
2013-03-01 17:28:40 +01:00
$ret = wp_insert_term ( $_POST [ 'tag-name' ], $taxonomy , $_POST );
2010-02-19 10:54:18 +01:00
if ( $ret && ! is_wp_error ( $ret ) )
2016-12-30 04:11:42 +01:00
$location = add_query_arg ( 'message' , 1 , $referer );
2010-02-19 10:54:18 +01:00
else
2016-10-07 21:39:29 +02:00
$location = add_query_arg ( array ( 'error' => true , 'message' => 4 ), $referer );
2014-09-29 06:54:16 +02:00
break ;
2008-01-25 20:29:01 +01:00
case 'delete' :
2014-09-29 06:54:16 +02:00
if ( ! isset ( $_REQUEST [ 'tag_ID' ] ) ) {
break ;
2009-12-03 02:43:49 +01:00
}
2010-08-11 23:54:51 +02:00
$tag_ID = ( int ) $_REQUEST [ 'tag_ID' ];
2011-12-14 00:45:31 +01:00
check_admin_referer ( 'delete-tag_' . $tag_ID );
2008-01-25 20:29:01 +01:00
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-01 00:40:28 +02:00
if ( ! current_user_can ( 'delete_term' , $tag_ID ) ) {
2015-09-02 18:06:21 +02:00
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
2016-06-29 17:16:29 +02:00
'<p>' . __ ( 'Sorry, you are not allowed to delete this item.' ) . '</p>' ,
2015-09-02 18:06:21 +02:00
403
);
}
2008-01-25 20:29:01 +01:00
2010-08-11 23:54:51 +02:00
wp_delete_term ( $tag_ID , $taxonomy );
2008-01-25 20:29:01 +01:00
2016-10-07 21:39:29 +02:00
$location = add_query_arg ( 'message' , 2 , $referer );
2014-09-29 06:54:16 +02:00
2017-05-12 21:26:41 +02:00
// When deleting a term, prevent the action from redirecting back to a term that no longer exists.
$location = remove_query_arg ( array ( 'tag_ID' , 'action' ), $location );
2014-09-29 06:54:16 +02:00
break ;
2008-01-25 20:29:01 +01:00
2008-02-08 20:38:53 +01:00
case 'bulk-delete' :
2010-08-11 23:54:51 +02:00
check_admin_referer ( 'bulk-tags' );
2008-02-08 20:38:53 +01:00
2015-09-02 18:06:21 +02:00
if ( ! current_user_can ( $tax -> cap -> delete_terms ) ) {
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
2016-06-29 17:16:29 +02:00
'<p>' . __ ( 'Sorry, you are not allowed to delete these items.' ) . '</p>' ,
2015-09-02 18:06:21 +02:00
403
);
}
2008-02-08 20:38:53 +01:00
2010-08-11 23:54:51 +02:00
$tags = ( array ) $_REQUEST [ 'delete_tags' ];
foreach ( $tags as $tag_ID ) {
wp_delete_term ( $tag_ID , $taxonomy );
2008-02-08 20:38:53 +01:00
}
2016-10-07 21:39:29 +02:00
$location = add_query_arg ( 'message' , 6 , $referer );
2014-09-29 06:54:16 +02:00
break ;
2008-02-08 20:38:53 +01:00
2008-01-25 20:29:01 +01:00
case 'edit' :
2015-12-11 23:49:41 +01:00
if ( ! isset ( $_REQUEST [ 'tag_ID' ] ) ) {
break ;
}
2016-01-15 09:27:27 +01:00
$term_id = ( int ) $_REQUEST [ 'tag_ID' ];
$term = get_term ( $term_id );
2008-02-05 07:47:27 +01:00
2016-01-15 09:27:27 +01:00
if ( ! $term instanceof WP_Term ) {
2011-10-12 22:30:50 +02:00
wp_die ( __ ( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) );
2016-01-15 09:27:27 +01:00
}
2008-01-25 20:29:01 +01:00
2016-01-15 09:27:27 +01:00
wp_redirect ( esc_url_raw ( get_edit_term_link ( $term_id , $taxonomy , $post_type ) ) );
2014-09-29 06:54:16 +02:00
exit ;
2008-01-25 20:29:01 +01:00
case 'editedtag' :
2013-03-01 17:28:40 +01:00
$tag_ID = ( int ) $_POST [ 'tag_ID' ];
2010-08-11 23:54:51 +02:00
check_admin_referer ( 'update-tag_' . $tag_ID );
2008-01-25 20:29:01 +01:00
Taxonomy: Introduce more fine grained capabilities for managing taxonomy terms.
This introduces the singular `edit_term`, `delete_term`, and `assign_term` meta capabilities for terms, and switches the base capability name for tags from `manage_categories` to `manage_post_tags` and the corresponding `edit_post_tags`, `delete_post_tags`, and `assign_post_tags`.
All of these capabilities ultimately map to `manage_categories` so by default there is no change in the behaviour of the capabilities for categories, tags, or custom taxonomies. The `map_meta_cap` filter and the `capabilities` argument when registering a taxonomy now allow for control over editing, deleting, and assigning individual terms, as well as a separation of capabilities for tags from those of categories.
Fixes #35614
Props johnjamesjacoby for feedback
Built from https://develop.svn.wordpress.org/trunk@38698
git-svn-id: http://core.svn.wordpress.org/trunk@38641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-01 00:40:28 +02:00
if ( ! current_user_can ( 'edit_term' , $tag_ID ) ) {
2015-09-02 18:06:21 +02:00
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
2016-06-29 17:16:29 +02:00
'<p>' . __ ( 'Sorry, you are not allowed to edit this item.' ) . '</p>' ,
2015-09-02 18:06:21 +02:00
403
);
}
2011-10-24 21:13:23 +02:00
$tag = get_term ( $tag_ID , $taxonomy );
2011-10-12 22:30:50 +02:00
if ( ! $tag )
wp_die ( __ ( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) );
2008-01-25 20:29:01 +01:00
2013-03-01 17:28:40 +01:00
$ret = wp_update_term ( $tag_ID , $taxonomy , $_POST );
2008-03-26 22:54:02 +01:00
2016-10-07 21:39:29 +02:00
if ( $ret && ! is_wp_error ( $ret ) ) {
$location = add_query_arg ( 'message' , 3 , $referer );
} else {
$location = add_query_arg ( array ( 'error' => true , 'message' => 5 ), $referer );
2008-01-25 20:29:01 +01:00
}
2014-09-29 06:54:16 +02:00
break ;
2016-09-23 22:33:30 +02:00
default :
if ( ! $wp_list_table -> current_action () || ! isset ( $_REQUEST [ 'delete_tags' ] ) ) {
break ;
}
check_admin_referer ( 'bulk-tags' );
$tags = ( array ) $_REQUEST [ 'delete_tags' ];
2016-10-26 16:45:29 +02:00
/** This action is documented in wp-admin/edit-comments.php */
2016-09-23 22:33:30 +02:00
$location = apply_filters ( 'handle_bulk_actions-' . get_current_screen () -> id , $location , $wp_list_table -> current_action (), $tags );
break ;
2014-09-29 06:54:16 +02:00
}
2008-03-26 22:54:02 +01:00
2014-09-29 06:54:16 +02:00
if ( ! $location && ! empty ( $_REQUEST [ '_wp_http_referer' ] ) ) {
2016-10-07 21:39:29 +02:00
$location = remove_query_arg ( array ( '_wp_http_referer' , '_wpnonce' ), wp_unslash ( $_SERVER [ 'REQUEST_URI' ] ) );
2014-09-29 06:54:16 +02:00
}
2011-01-25 20:20:20 +01:00
2014-09-29 06:54:16 +02:00
if ( $location ) {
2016-10-07 22:06:28 +02:00
if ( $pagenum > 1 ) {
$location = add_query_arg ( 'paged' , $pagenum , $location ); // $pagenum takes care of $total_pages.
}
2016-06-14 17:06:30 +02:00
/**
* Filters the taxonomy redirect destination URL .
*
* @ since 4.6 . 0
2016-09-23 22:33:30 +02:00
*
2016-06-14 17:06:30 +02:00
* @ param string $location The destination URL .
* @ param object $tax The taxonomy object .
*/
wp_redirect ( apply_filters ( 'redirect_term_location' , $location , $tax ) );
2011-01-25 20:20:20 +01:00
exit ;
2008-02-15 23:29:18 +01:00
}
2010-08-22 13:22:46 +02:00
$wp_list_table -> prepare_items ();
2011-01-25 20:20:20 +01:00
$total_pages = $wp_list_table -> get_pagination_arg ( 'total_pages' );
2011-01-26 10:56:17 +01:00
if ( $pagenum > $total_pages && $total_pages > 0 ) {
2011-01-25 20:20:20 +01:00
wp_redirect ( add_query_arg ( 'paged' , $total_pages ) );
exit ;
}
2010-08-13 01:21:05 +02:00
2008-11-12 10:35:50 +01:00
wp_enqueue_script ( 'admin-tags' );
2010-05-13 06:10:17 +02:00
if ( current_user_can ( $tax -> cap -> edit_terms ) )
2008-10-05 06:43:52 +02:00
wp_enqueue_script ( 'inline-edit-tax' );
2008-02-05 08:45:40 +01:00
2010-12-16 07:37:03 +01:00
if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy ) {
2010-12-16 14:09:16 +01:00
$help = '' ;
2010-05-26 01:49:40 +02:00
if ( 'category' == $taxonomy )
2010-12-17 04:32:46 +01:00
$help = '<p>' . sprintf ( __ ( 'You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your <a href="%s">writing settings</a>.' ) , 'options-writing.php' ) . '</p>' ;
elseif ( 'link_category' == $taxonomy )
2011-11-24 01:21:39 +01:00
$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>' ;
2010-05-26 01:49:40 +02:00
else
2011-11-24 01:21:39 +01:00
$help = '<p>' . __ ( 'You can assign keywords to your posts using <strong>tags</strong>. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another.' ) . '</p>' ;
2010-12-17 04:32:46 +01:00
if ( 'link_category' == $taxonomy )
2012-07-25 20:06:13 +02:00
$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>' ;
2010-12-16 07:37:03 +01:00
else
$help .= '<p>' . __ ( 'What’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>' ;
2010-05-26 01:49:40 +02:00
2011-12-01 02:51:34 +01:00
get_current_screen () -> add_help_tab ( array (
2011-12-01 03:22:07 +01:00
'id' => 'overview' ,
2011-12-01 02:51:34 +01:00
'title' => __ ( 'Overview' ),
'content' => $help ,
) );
2010-12-16 07:37:03 +01:00
2011-12-01 02:51:34 +01:00
if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) {
if ( 'category' == $taxonomy )
$help = '<p>' . __ ( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '</p>' ;
else
$help = '<p>' . __ ( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '</p>' ;
2010-05-26 01:49:40 +02:00
2010-12-16 07:37:03 +01:00
$help .= '<ul>' .
2015-08-19 06:53:25 +02:00
'<li>' . __ ( '<strong>Name</strong> — The name is how it appears on your site.' ) . '</li>' ;
2010-12-17 04:32:46 +01:00
2011-12-01 02:51:34 +01:00
if ( ! global_terms_enabled () )
2015-08-19 06:53:25 +02:00
$help .= '<li>' . __ ( '<strong>Slug</strong> — The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '</li>' ;
2010-05-26 01:49:40 +02:00
2011-12-01 02:51:34 +01:00
if ( 'category' == $taxonomy )
2015-08-19 06:53:25 +02:00
$help .= '<li>' . __ ( '<strong>Parent</strong> — 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>' ;
2010-05-26 01:49:40 +02:00
2015-08-19 06:53:25 +02:00
$help .= '<li>' . __ ( '<strong>Description</strong> — The description is not prominent by default; however, some themes may display it.' ) . '</li>' .
2010-05-26 01:49:40 +02:00
'</ul>' .
2011-11-02 04:12:37 +01:00
'<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>' ;
2011-12-01 05:51:35 +01:00
2011-12-01 02:51:34 +01:00
get_current_screen () -> add_help_tab ( array (
'id' => 'adding-terms' ,
'title' => 'category' == $taxonomy ? __ ( 'Adding Categories' ) : __ ( 'Adding Tags' ),
'content' => $help ,
) );
}
2011-11-02 04:12:37 +01:00
$help = '<p><strong>' . __ ( 'For more information:' ) . '</strong></p>' ;
2010-05-26 01:49:40 +02:00
if ( 'category' == $taxonomy )
2016-10-04 22:27:33 +02:00
$help .= '<p>' . __ ( '<a href="https://codex.wordpress.org/Posts_Categories_Screen">Documentation on Categories</a>' ) . '</p>' ;
2010-12-16 07:37:03 +01:00
elseif ( 'link_category' == $taxonomy )
2016-10-04 22:27:33 +02:00
$help .= '<p>' . __ ( '<a href="https://codex.wordpress.org/Links_Link_Categories_Screen">Documentation on Link Categories</a>' ) . '</p>' ;
2010-05-26 01:49:40 +02:00
else
2016-10-04 22:27:33 +02:00
$help .= '<p>' . __ ( '<a href="https://codex.wordpress.org/Posts_Tags_Screen">Documentation on Tags</a>' ) . '</p>' ;
2010-05-26 01:49:40 +02:00
2016-10-04 22:27:33 +02:00
$help .= '<p>' . __ ( '<a href="https://wordpress.org/support/">Support Forums</a>' ) . '</p>' ;
2010-05-26 01:49:40 +02:00
2011-11-02 21:14:10 +01:00
get_current_screen () -> set_help_sidebar ( $help );
2011-11-02 04:12:37 +01:00
2011-12-01 02:51:34 +01:00
unset ( $help );
2010-05-26 01:49:40 +02:00
}
2013-09-25 02:18:11 +02:00
require_once ( ABSPATH . 'wp-admin/admin-header.php' );
2008-01-25 20:29:01 +01:00
2015-09-15 17:59:42 +02:00
/** Also used by the Edit Tag form */
require_once ( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' );
2010-02-13 04:08:16 +01:00
2015-03-18 22:59:27 +01:00
$class = ( isset ( $_REQUEST [ 'error' ] ) ) ? 'error' : 'updated' ;
2015-06-16 06:30:26 +02:00
if ( is_plugin_active ( 'wpcat2tag-importer/wpcat2tag-importer.php' ) ) {
$import_link = admin_url ( 'admin.php?import=wpcat2tag' );
} else {
$import_link = admin_url ( 'import.php' );
}
2010-02-13 04:08:16 +01:00
?>
2008-01-25 20:29:01 +01:00
2008-11-05 20:51:07 +01:00
< div class = " wrap nosubsub " >
2016-12-09 21:50:41 +01:00
< h1 class = " wp-heading-inline " >< ? php echo esc_html ( $title ); ?> </h1>
< ? php
2016-01-14 21:06:25 +01:00
if ( isset ( $_REQUEST [ 's' ] ) && strlen ( $_REQUEST [ 's' ] ) ) {
/* translators: %s: search keywords */
printf ( '<span class="subtitle">' . __ ( 'Search results for “%s”' ) . '</span>' , esc_html ( wp_unslash ( $_REQUEST [ 's' ] ) ) );
}
?>
2016-12-09 21:50:41 +01:00
< hr class = " wp-header-end " >
2008-11-05 20:51:07 +01:00
2013-08-27 23:13:08 +02:00
< ? php if ( $message ) : ?>
2015-04-02 00:06:28 +02:00
< div id = " message " class = " <?php echo $class ; ?> notice is-dismissible " >< p >< ? php echo $message ; ?> </p></div>
2015-03-18 22:59:27 +01:00
< ? php $_SERVER [ 'REQUEST_URI' ] = remove_query_arg ( array ( 'message' , 'error' ), $_SERVER [ 'REQUEST_URI' ] );
2008-09-28 06:11:27 +02:00
endif ; ?>
2009-07-01 10:12:39 +02:00
< div id = " ajax-response " ></ div >
2008-02-12 10:25:19 +01:00
2016-05-16 15:02:29 +02:00
< form class = " search-form wp-clearfix " method = " get " >
2009-05-29 04:54:44 +02:00
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $taxonomy ); ?> " />
2010-01-10 02:24:56 +01:00
< input type = " hidden " name = " post_type " value = " <?php echo esc_attr( $post_type ); ?> " />
2010-12-16 21:45:10 +01:00
< ? php $wp_list_table -> search_box ( $tax -> labels -> search_items , 'tag' ); ?>
2008-10-03 02:13:12 +02:00
</ form >
2008-10-02 20:03:45 +02:00
2016-05-16 15:02:29 +02:00
< div id = " col-container " class = " wp-clearfix " >
2008-10-25 10:01:37 +02:00
< div id = " col-left " >
< div class = " col-wrap " >
2008-10-25 22:55:40 +02:00
2008-12-09 19:03:31 +01:00
< ? php
2010-02-15 10:05:56 +01:00
2010-05-13 06:10:17 +02:00
if ( current_user_can ( $tax -> cap -> edit_terms ) ) {
2013-11-20 00:16:10 +01:00
if ( 'category' == $taxonomy ) {
/**
* Fires before the Add Category form .
*
* @ since 2.1 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _pre_add_form instead .
*
* @ param object $arg Optional arguments cast to an object .
*/
do_action ( 'add_category_form_pre' , ( object ) array ( 'parent' => 0 ) );
} elseif ( 'link_category' == $taxonomy ) {
/**
* Fires before the link category form .
*
* @ since 2.3 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _pre_add_form instead .
*
* @ param object $arg Optional arguments cast to an object .
*/
do_action ( 'add_link_category_form_pre' , ( object ) array ( 'parent' => 0 ) );
} else {
/**
* Fires before the Add Tag form .
*
* @ since 2.5 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _pre_add_form instead .
*
* @ param string $taxonomy The taxonomy slug .
*/
do_action ( 'add_tag_form_pre' , $taxonomy );
}
2010-10-16 15:26:54 +02:00
2013-11-20 00:16:10 +01:00
/**
* Fires before the Add Term form for all taxonomies .
*
2014-11-30 12:42:24 +01:00
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
2013-11-20 00:16:10 +01:00
*
* @ since 3.0 . 0
*
* @ param string $taxonomy The taxonomy slug .
*/
do_action ( " { $taxonomy } _pre_add_form " , $taxonomy );
2010-02-04 11:51:58 +01:00
?>
2008-10-25 10:01:37 +02:00
2008-10-25 22:55:40 +02:00
< div class = " form-wrap " >
2015-09-05 22:17:25 +02:00
< h2 >< ? php echo $tax -> labels -> add_new_item ; ?> </h2>
2016-09-20 15:33:29 +02:00
< form id = " addtag " method = " post " action = " edit-tags.php " class = " validate " < ? php
2013-11-20 00:16:10 +01:00
/**
2016-09-20 15:33:29 +02:00
* Fires inside the Add Tag form tag .
2013-11-20 00:16:10 +01:00
*
2014-11-30 12:42:24 +01:00
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
2013-11-20 00:16:10 +01:00
*
2013-11-23 22:18:10 +01:00
* @ since 3.7 . 0
2013-11-20 00:16:10 +01:00
*/
2014-11-30 12:42:24 +01:00
do_action ( " { $taxonomy } _term_new_form_tag " );
?> >
2009-12-18 07:30:16 +01:00
< input type = " hidden " name = " action " value = " add-tag " />
2010-06-09 18:52:25 +02:00
< input type = " hidden " name = " screen " value = " <?php echo esc_attr( $current_screen->id ); ?> " />
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $taxonomy ); ?> " />
2010-06-27 03:05:53 +02:00
< input type = " hidden " name = " post_type " value = " <?php echo esc_attr( $post_type ); ?> " />
2011-05-24 01:33:30 +02:00
< ? php wp_nonce_field ( 'add-tag' , '_wpnonce_add-tag' ); ?>
2008-10-25 10:01:37 +02:00
2014-10-02 02:29:16 +02:00
< div class = " form-field form-required term-name-wrap " >
2014-10-02 22:01:16 +02:00
< label for = " tag-name " >< ? php _ex ( 'Name' , 'term name' ); ?> </label>
2009-07-01 10:12:39 +02:00
< input name = " tag-name " id = " tag-name " type = " text " value = " " size = " 40 " aria - required = " true " />
2010-02-13 04:08:16 +01:00
< p >< ? php _e ( 'The name is how it appears on your site.' ); ?> </p>
2008-10-25 10:01:37 +02:00
</ div >
2010-05-13 06:12:57 +02:00
< ? php if ( ! global_terms_enabled () ) : ?>
2014-10-02 02:29:16 +02:00
< div class = " form-field term-slug-wrap " >
2014-10-02 22:01:16 +02:00
< label for = " tag-slug " >< ? php _e ( 'Slug' ); ?> </label>
2010-03-28 03:42:34 +02:00
< input name = " slug " id = " tag-slug " type = " text " value = " " size = " 40 " />
2009-03-13 06:24:20 +01:00
< p >< ? php _e ( 'The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ); ?> </p>
2008-10-25 22:55:40 +02:00
</ div >
2010-10-28 08:52:33 +02:00
< ? php endif ; // global_terms_enabled() ?>
2010-02-13 04:08:16 +01:00
< ? php if ( is_taxonomy_hierarchical ( $taxonomy ) ) : ?>
2014-10-02 02:29:16 +02:00
< div class = " form-field term-parent-wrap " >
2017-03-03 03:54:42 +01:00
< label for = " parent " >< ? php echo esc_html ( $tax -> labels -> parent_item ); ?> </label>
2013-08-26 19:31:09 +02:00
< ? php
$dropdown_args = array (
'hide_empty' => 0 ,
'hide_if_empty' => false ,
'taxonomy' => $taxonomy ,
'name' => 'parent' ,
'orderby' => 'name' ,
'hierarchical' => true ,
'show_option_none' => __ ( 'None' ),
);
2013-11-20 00:16:10 +01:00
/**
2016-05-22 20:01:30 +02:00
* Filters the taxonomy parent drop - down on the Edit Term page .
2013-11-20 00:16:10 +01:00
*
* @ since 3.7 . 0
2015-04-04 16:13:27 +02:00
* @ since 4.2 . 0 Added `$context` parameter .
2013-11-20 00:16:10 +01:00
*
* @ param array $dropdown_args {
* An array of taxonomy parent drop - down arguments .
*
* @ type int | bool $hide_empty Whether to hide terms not attached to any posts . Default 0 | false .
* @ type bool $hide_if_empty Whether to hide the drop - down if no terms exist . Default false .
* @ type string $taxonomy The taxonomy slug .
* @ type string $name Value of the name attribute to use for the drop - down select element .
* Default 'parent' .
* @ type string $orderby The field to order by . Default 'name' .
* @ type bool $hierarchical Whether the taxonomy is hierarchical . Default true .
* @ type string $show_option_none Label to display if there are no terms . Default 'None' .
* }
* @ param string $taxonomy The taxonomy slug .
2014-12-29 16:27:22 +01:00
* @ param string $context Filter context . Accepts 'new' or 'edit' .
2013-11-20 00:16:10 +01:00
*/
2014-12-29 16:27:22 +01:00
$dropdown_args = apply_filters ( 'taxonomy_parent_dropdown_args' , $dropdown_args , $taxonomy , 'new' );
2015-04-04 16:13:27 +02:00
2013-08-26 19:31:09 +02:00
wp_dropdown_categories ( $dropdown_args );
?>
2017-01-13 05:19:39 +01:00
< ? php if ( 'category' == $taxonomy ) : ?>
< 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>
< ? php else : ?>
< 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>
2010-02-13 04:08:16 +01:00
< ? php endif ; ?>
2010-01-24 12:00:27 +01:00
</ div >
2010-02-13 04:08:16 +01:00
< ? php endif ; // is_taxonomy_hierarchical() ?>
2014-10-02 02:29:16 +02:00
< div class = " form-field term-description-wrap " >
2014-10-02 22:01:16 +02:00
< label for = " tag-description " >< ? php _e ( 'Description' ); ?> </label>
2010-03-28 03:42:34 +02:00
< textarea name = " description " id = " tag-description " rows = " 5 " cols = " 40 " ></ textarea >
2010-01-24 03:07:13 +01:00
< p >< ? php _e ( 'The description is not prominent by default; however, some themes may show it.' ); ?> </p>
2009-04-09 18:00:40 +02:00
</ div >
2010-02-10 18:43:29 +01:00
< ? php
2013-11-20 00:16:10 +01:00
if ( ! is_taxonomy_hierarchical ( $taxonomy ) ) {
/**
* Fires after the Add Tag form fields for non - hierarchical taxonomies .
*
* @ since 3.0 . 0
*
* @ param string $taxonomy The taxonomy slug .
*/
do_action ( 'add_tag_form_fields' , $taxonomy );
}
/**
2015-01-19 16:31:23 +01:00
* Fires after the Add Term form fields .
2013-11-20 00:16:10 +01:00
*
2014-11-30 12:42:24 +01:00
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
2013-11-20 00:16:10 +01:00
*
* @ since 3.0 . 0
*
* @ param string $taxonomy The taxonomy slug .
*/
do_action ( " { $taxonomy } _add_form_fields " , $taxonomy );
2010-10-28 23:56:43 +02:00
2012-07-30 20:41:42 +02:00
submit_button ( $tax -> labels -> add_new_item );
2010-10-28 23:56:43 +02:00
2013-11-20 00:16:10 +01:00
if ( 'category' == $taxonomy ) {
/**
* Fires at the end of the Edit Category form .
*
* @ since 2.1 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _add_form instead .
*
* @ param object $arg Optional arguments cast to an object .
*/
do_action ( 'edit_category_form' , ( object ) array ( 'parent' => 0 ) );
} elseif ( 'link_category' == $taxonomy ) {
/**
* Fires at the end of the Edit Link form .
*
* @ since 2.3 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _add_form instead .
*
* @ param object $arg Optional arguments cast to an object .
*/
do_action ( 'edit_link_category_form' , ( object ) array ( 'parent' => 0 ) );
} else {
/**
* Fires at the end of the Add Tag form .
*
* @ since 2.7 . 0
* @ deprecated 3.0 . 0 Use { $taxonomy } _add_form instead .
*
* @ param string $taxonomy The taxonomy slug .
*/
do_action ( 'add_tag_form' , $taxonomy );
}
2010-10-16 15:26:54 +02:00
2013-11-20 00:16:10 +01:00
/**
* Fires at the end of the Add Term form for all taxonomies .
*
2014-11-30 12:42:24 +01:00
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
2013-11-20 00:16:10 +01:00
*
* @ since 3.0 . 0
*
* @ param string $taxonomy The taxonomy slug .
*/
do_action ( " { $taxonomy } _add_form " , $taxonomy );
2010-02-04 11:51:58 +01:00
?>
2008-10-25 22:55:40 +02:00
</ form ></ div >
2016-10-05 23:26:31 +02:00
< ? php } ?>
2008-01-25 20:29:01 +01:00
2008-10-25 10:01:37 +02:00
</ div >
</ div ><!-- / col - left -->
2008-01-25 20:29:01 +01:00
2016-05-16 15:02:29 +02:00
< div id = " col-right " >
< div class = " col-wrap " >
2017-09-13 17:20:44 +02:00
< ? php $wp_list_table -> views (); ?>
2016-05-16 15:02:29 +02:00
< form id = " posts-filter " method = " post " >
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $taxonomy ); ?> " />
< input type = " hidden " name = " post_type " value = " <?php echo esc_attr( $post_type ); ?> " />
< ? php $wp_list_table -> display (); ?>
</ form >
< ? php if ( 'category' == $taxonomy ) : ?>
< div class = " form-wrap edit-term-notes " >
< p >
< ? php
echo '<strong>' . __ ( 'Note:' ) . '</strong><br />' ;
printf (
/* translators: %s: default category */
__ ( '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 category %s.' ),
/** This filter is documented in wp-includes/category-template.php */
2017-08-03 18:13:44 +02:00
'<strong>' . apply_filters ( 'the_category' , get_cat_name ( get_option ( 'default_category' ) ), '' , '' ) . '</strong>'
2016-05-16 15:02:29 +02:00
);
?>
</ p >
< ? php if ( current_user_can ( 'import' ) ) : ?>
< p >< ? php printf ( __ ( 'Categories can be selectively converted to tags using the <a href="%s">category to tag converter</a>.' ), esc_url ( $import_link ) ) ?> </p>
< ? php endif ; ?>
</ div >
< ? php elseif ( 'post_tag' == $taxonomy && current_user_can ( 'import' ) ) : ?>
< div class = " form-wrap edit-term-notes " >
< p >< ? php printf ( __ ( 'Tags can be selectively converted to categories using the <a href="%s">tag to category converter</a>.' ), esc_url ( $import_link ) ) ; ?> </p>
</ div >
< ? php endif ;
/**
* Fires after the taxonomy list table .
*
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
*
* @ since 3.0 . 0
*
* @ param string $taxonomy The taxonomy name .
*/
do_action ( " after- { $taxonomy } -table " , $taxonomy );
?>
</ div >
</ div ><!-- / col - right -->
2008-10-25 10:01:37 +02:00
</ div ><!-- / col - container -->
</ div ><!-- / wrap -->
2014-12-13 23:08:23 +01:00
< ? php if ( ! wp_is_mobile () ) : ?>
2012-07-24 02:15:15 +02:00
< script type = " text/javascript " >
try { document . forms . addtag [ 'tag-name' ] . focus ();} catch ( e ){}
</ script >
2008-01-25 20:29:01 +01:00
< ? php
2014-12-13 23:08:23 +01:00
endif ;
2014-09-29 06:54:16 +02:00
$wp_list_table -> inline_edit ();
2008-01-25 20:29:01 +01:00
2013-09-25 02:18:11 +02:00
include ( ABSPATH . 'wp-admin/admin-footer.php' );