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
2017-12-01 00:11:00 +01:00
if ( ! $taxnow ) {
2016-07-17 18:15:34 +02:00
wp_die ( __ ( 'Invalid taxonomy.' ) );
2017-12-01 00:11:00 +01:00
}
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
2017-12-01 00:11:00 +01:00
if ( ! $tax ) {
2016-07-17 18:15:34 +02:00
wp_die ( __ ( 'Invalid taxonomy.' ) );
2017-12-01 00:11:00 +01:00
}
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 (
2018-02-19 03:13:32 +01:00
'<h1>' . __ ( 'You need a higher level of permission.' ) . '</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 ;
2017-12-01 00:11:00 +01:00
$wp_list_table = _get_list_table ( 'WP_Terms_List_Table' );
$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 ) {
2017-12-01 00:11:00 +01: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 ) {
2017-12-01 00:11:00 +01:00
$parent_file = 'link-manager.php' ;
2010-12-18 17:48:20 +01:00
$submenu_file = 'edit-tags.php?taxonomy=link_category' ;
2010-01-04 17:58:43 +01:00
} else {
2017-12-01 00:11:00 +01:00
$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
2017-12-01 00:11:00 +01:00
add_screen_option (
2018-08-17 03:51:36 +02:00
'per_page' ,
array (
2017-12-01 00:11:00 +01:00
'default' => 20 ,
'option' => 'edit_' . $tax -> name . '_per_page' ,
)
);
2011-10-02 08:59:36 +02:00
2017-12-01 00:11:00 +01:00
get_current_screen () -> set_screen_reader_content (
array (
'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 ;
2017-12-01 00:11:00 +01: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
2017-12-01 00:11:00 +01:00
case 'add-tag' :
check_admin_referer ( 'add-tag' , '_wpnonce_add-tag' );
if ( ! current_user_can ( $tax -> cap -> edit_terms ) ) {
wp_die (
2018-02-19 03:13:32 +01:00
'<h1>' . __ ( 'You need a higher level of permission.' ) . '</h1>' .
2017-12-01 00:11:00 +01:00
'<p>' . __ ( 'Sorry, you are not allowed to create terms in this taxonomy.' ) . '</p>' ,
403
);
}
$ret = wp_insert_term ( $_POST [ 'tag-name' ], $taxonomy , $_POST );
if ( $ret && ! is_wp_error ( $ret ) ) {
$location = add_query_arg ( 'message' , 1 , $referer );
} else {
$location = add_query_arg (
array (
'error' => true ,
'message' => 4 ,
2018-08-17 03:51:36 +02:00
),
$referer
2017-12-01 00:11:00 +01:00
);
}
2008-01-25 20:29:01 +01:00
2014-09-29 06:54:16 +02:00
break ;
2017-12-01 00:11:00 +01:00
case 'delete' :
if ( ! isset ( $_REQUEST [ 'tag_ID' ] ) ) {
break ;
}
2017-05-12 21:26:41 +02:00
2017-12-01 00:11:00 +01:00
$tag_ID = ( int ) $_REQUEST [ 'tag_ID' ];
check_admin_referer ( 'delete-tag_' . $tag_ID );
2008-01-25 20:29:01 +01:00
2017-12-01 00:11:00 +01:00
if ( ! current_user_can ( 'delete_term' , $tag_ID ) ) {
wp_die (
2018-02-19 03:13:32 +01:00
'<h1>' . __ ( 'You need a higher level of permission.' ) . '</h1>' .
2017-12-01 00:11:00 +01:00
'<p>' . __ ( 'Sorry, you are not allowed to delete this item.' ) . '</p>' ,
403
);
}
2008-02-08 20:38:53 +01:00
2010-08-11 23:54:51 +02:00
wp_delete_term ( $tag_ID , $taxonomy );
2008-02-08 20:38:53 +01:00
2017-12-01 00:11:00 +01:00
$location = add_query_arg ( 'message' , 2 , $referer );
2014-09-29 06:54:16 +02:00
2017-12-01 00:11:00 +01: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 );
2008-02-08 20:38:53 +01:00
2015-12-11 23:49:41 +01:00
break ;
2008-01-25 20:29:01 +01:00
2017-12-01 00:11:00 +01:00
case 'bulk-delete' :
check_admin_referer ( 'bulk-tags' );
2008-01-25 20:29:01 +01:00
2017-12-01 00:11:00 +01:00
if ( ! current_user_can ( $tax -> cap -> delete_terms ) ) {
wp_die (
2018-02-19 03:13:32 +01:00
'<h1>' . __ ( 'You need a higher level of permission.' ) . '</h1>' .
2017-12-01 00:11:00 +01:00
'<p>' . __ ( 'Sorry, you are not allowed to delete these items.' ) . '</p>' ,
403
);
}
2008-01-25 20:29:01 +01:00
2017-12-01 00:11:00 +01:00
$tags = ( array ) $_REQUEST [ 'delete_tags' ];
foreach ( $tags as $tag_ID ) {
wp_delete_term ( $tag_ID , $taxonomy );
}
2011-10-24 21:13:23 +02:00
2017-12-01 00:11:00 +01:00
$location = add_query_arg ( 'message' , 6 , $referer );
2008-01-25 20:29:01 +01:00
2017-12-01 00:11:00 +01:00
break ;
2008-03-26 22:54:02 +01:00
2017-12-01 00:11:00 +01:00
case 'edit' :
if ( ! isset ( $_REQUEST [ 'tag_ID' ] ) ) {
break ;
}
$term_id = ( int ) $_REQUEST [ 'tag_ID' ];
$term = get_term ( $term_id );
if ( ! $term instanceof WP_Term ) {
wp_die ( __ ( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) );
}
wp_redirect ( esc_url_raw ( get_edit_term_link ( $term_id , $taxonomy , $post_type ) ) );
exit ;
case 'editedtag' :
$tag_ID = ( int ) $_POST [ 'tag_ID' ];
check_admin_referer ( 'update-tag_' . $tag_ID );
if ( ! current_user_can ( 'edit_term' , $tag_ID ) ) {
wp_die (
2018-02-19 03:13:32 +01:00
'<h1>' . __ ( 'You need a higher level of permission.' ) . '</h1>' .
2017-12-01 00:11:00 +01:00
'<p>' . __ ( 'Sorry, you are not allowed to edit this item.' ) . '</p>' ,
403
);
}
$tag = get_term ( $tag_ID , $taxonomy );
if ( ! $tag ) {
wp_die ( __ ( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) );
}
$ret = wp_update_term ( $tag_ID , $taxonomy , $_POST );
if ( $ret && ! is_wp_error ( $ret ) ) {
$location = add_query_arg ( 'message' , 3 , $referer );
} else {
$location = add_query_arg (
array (
'error' => true ,
'message' => 5 ,
2018-08-17 03:51:36 +02:00
),
$referer
2017-12-01 00:11:00 +01:00
);
}
break ;
default :
if ( ! $wp_list_table -> current_action () || ! isset ( $_REQUEST [ 'delete_tags' ] ) ) {
break ;
}
check_admin_referer ( 'bulk-tags' );
$tags = ( array ) $_REQUEST [ 'delete_tags' ];
/** This action is documented in wp-admin/edit-comments.php */
$location = apply_filters ( 'handle_bulk_actions-' . get_current_screen () -> id , $location , $wp_list_table -> current_action (), $tags );
2016-09-23 22:33:30 +02:00
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
2017-12-01 00:11:00 +01:00
wp_enqueue_script ( 'admin-tags' );
if ( current_user_can ( $tax -> cap -> edit_terms ) ) {
wp_enqueue_script ( 'inline-edit-tax' );
}
2008-02-05 08:45:40 +01:00
2017-12-01 00:11:00 +01:00
if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy ) {
$help = '' ;
if ( 'category' == $taxonomy ) {
$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>' ;
2017-12-01 00:11:00 +01: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>' ;
2017-12-01 00:11:00 +01:00
}
2010-12-17 04:32:46 +01:00
2017-12-01 00:11:00 +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>' ;
2017-12-01 00:11:00 +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
2017-12-01 00:11:00 +01:00
get_current_screen () -> add_help_tab (
array (
'id' => 'overview' ,
'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 ) {
2017-12-01 00:11:00 +01:00
if ( 'category' == $taxonomy ) {
2011-12-01 02:51:34 +01:00
$help = '<p>' . __ ( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '</p>' ;
2017-12-01 00:11:00 +01:00
} else {
2011-12-01 02:51:34 +01:00
$help = '<p>' . __ ( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '</p>' ;
2017-12-01 00:11:00 +01:00
}
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
2017-12-01 00:11:00 +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>' ;
2017-12-01 00:11:00 +01:00
}
2010-05-26 01:49:40 +02:00
2017-12-01 00:11:00 +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>' ;
2017-12-01 00:11:00 +01:00
}
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
2017-12-01 00:11:00 +01:00
get_current_screen () -> add_help_tab (
array (
'id' => 'adding-terms' ,
'title' => 'category' == $taxonomy ? __ ( 'Adding Categories' ) : __ ( 'Adding Tags' ),
'content' => $help ,
)
);
2011-12-01 02:51:34 +01:00
}
2011-11-02 04:12:37 +01:00
$help = '<p><strong>' . __ ( 'For more information:' ) . '</strong></p>' ;
2010-05-26 01:49:40 +02:00
2017-12-01 00:11:00 +01: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>' ;
2017-12-01 00:11:00 +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>' ;
2017-12-01 00:11:00 +01: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>' ;
2017-12-01 00:11:00 +01:00
}
2010-05-26 01:49:40 +02:00
2017-12-01 00:11:00 +01: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>
2018-08-17 03:51:36 +02:00
< ? php
$_SERVER [ 'REQUEST_URI' ] = remove_query_arg ( array ( 'message' , 'error' ), $_SERVER [ 'REQUEST_URI' ] );
2017-12-01 00:11:00 +01: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 " >
2017-12-01 00:11:00 +01:00
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $taxonomy ); ?> " />
< 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
2019-01-09 13:05:50 +01:00
< ? php
$can_edit_terms = current_user_can ( $tax -> cap -> edit_terms );
if ( $can_edit_terms ) {
2019-01-09 13:37:49 +01: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
2019-01-09 13:37:49 +01:00
< ? php
2013-11-20 00:16:10 +01:00
if ( 'category' == $taxonomy ) {
/**
2017-12-01 00:11:00 +01:00
* Fires before the Add Category form .
2013-11-20 00:16:10 +01:00
*
* @ 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 );
2018-08-17 03:51:36 +02: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>
2017-12-01 00:11:00 +01:00
< form id = " addtag " method = " post " action = " edit-tags.php " class = " validate "
2018-08-17 03:51:36 +02:00
< ? php
/**
* Fires inside the Add Tag form tag .
*
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
*
* @ since 3.7 . 0
*/
do_action ( " { $taxonomy } _term_new_form_tag " );
?>
2017-12-01 00:11:00 +01:00
>
2009-12-18 07:30:16 +01:00
< input type = " hidden " name = " action " value = " add-tag " />
2017-12-01 00:11:00 +01:00
< input type = " hidden " name = " screen " value = " <?php echo esc_attr( $current_screen->id ); ?> " />
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $taxonomy ); ?> " />
< input type = " hidden " name = " post_type " value = " <?php echo esc_attr( $post_type ); ?> " />
2018-08-17 03:51:36 +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 " />
2017-12-01 00:11:00 +01:00
< p >< ? php _e ( 'The name is how it appears on your site.' ); ?> </p>
2008-10-25 10:01:37 +02:00
</ div >
2018-08-17 03:51:36 +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 " />
2017-12-01 00:11:00 +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() ?>
2018-08-17 03:51:36 +02: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>
2018-08-17 03:51:36 +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-08-26 19:31:09 +02:00
2018-08-17 03:51:36 +02:00
/**
* Filters the taxonomy parent drop - down on the Edit Term page .
*
* @ since 3.7 . 0
* @ since 4.2 . 0 Added `$context` parameter .
*
* @ 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 .
* @ param string $context Filter context . Accepts 'new' or 'edit' .
*/
$dropdown_args = apply_filters ( 'taxonomy_parent_dropdown_args' , $dropdown_args , $taxonomy , 'new' );
2015-04-04 16:13:27 +02:00
2018-08-17 03:51:36 +02:00
wp_dropdown_categories ( $dropdown_args );
?>
< ? php if ( 'category' == $taxonomy ) : ?>
2017-01-13 05:19:39 +01:00
< 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 >
2018-08-17 03:51:36 +02: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 >
2017-12-01 00:11:00 +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 >
2018-08-17 03:51:36 +02:00
< ? php
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 );
}
2013-11-20 00:16:10 +01:00
/**
2018-08-17 03:51:36 +02:00
* Fires after the Add Term form fields .
*
* 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 .
*/
2018-08-17 03:51:36 +02:00
do_action ( " { $taxonomy } _add_form_fields " , $taxonomy );
2013-11-20 00:16:10 +01:00
2018-08-17 03:51:36 +02:00
submit_button ( $tax -> labels -> add_new_item );
2010-10-28 23:56:43 +02:00
2018-08-17 03:51:36 +02: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-28 23:56:43 +02:00
2013-11-20 00:16:10 +01:00
/**
2018-08-17 03:51:36 +02:00
* Fires at the end of the Add Term form for all taxonomies .
2013-11-20 00:16:10 +01:00
*
2018-08-17 03:51:36 +02:00
* The dynamic portion of the hook name , `$taxonomy` , refers to the taxonomy slug .
2013-11-20 00:16:10 +01:00
*
2018-08-17 03:51:36 +02:00
* @ since 3.0 . 0
2013-11-20 00:16:10 +01:00
*
* @ param string $taxonomy The taxonomy slug .
*/
2018-08-17 03:51:36 +02:00
do_action ( " { $taxonomy } _add_form " , $taxonomy );
?>
2008-10-25 22:55:40 +02:00
</ form ></ div >
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 " >
2019-01-09 13:05:50 +01:00
< ? php } ?>
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
printf (
/* translators: %s: default category */
2018-10-02 21:19:24 +02:00
__ ( '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.' ),
2016-05-16 15:02:29 +02:00
/** This filter is documented in wp-includes/category-template.php */
2017-12-01 00:11:00 +01:00
'<strong>' . apply_filters ( 'the_category' , get_cat_name ( get_option ( 'default_category' ) ), '' , '' ) . '</strong>'
2016-05-16 15:02:29 +02:00
);
?>
</ p >
2018-08-17 03:51:36 +02:00
< ? php if ( current_user_can ( 'import' ) ) : ?>
2018-10-01 23:56:25 +02:00
< 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 >
2018-08-17 03:51:36 +02:00
< ? php endif ; ?>
2016-05-16 15:02:29 +02:00
</ div >
< ? php elseif ( 'post_tag' == $taxonomy && current_user_can ( 'import' ) ) : ?>
< div class = " form-wrap edit-term-notes " >
2017-12-01 00:11:00 +01:00
< 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>
2016-05-16 15:02:29 +02:00
</ div >
2018-08-17 03:51:36 +02:00
< ? php
2017-12-01 00:11:00 +01:00
endif ;
2016-05-16 15:02:29 +02:00
/**
* 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 );
2019-01-09 13:05:50 +01:00
if ( $can_edit_terms ) {
2019-01-09 13:37:49 +01:00
?>
2016-05-16 15:02:29 +02:00
</ div >
</ div ><!-- / col - right -->
2008-10-25 10:01:37 +02:00
</ div ><!-- / col - container -->
2019-01-09 13:05:50 +01:00
< ? php } ?>
2008-10-25 10:01:37 +02:00
</ 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 >
2018-08-17 03:51:36 +02: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' );