edit-tag-form.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <?php
  2. /**
  3. * Edit tag form for inclusion in administration panels.
  4. *
  5. * @package WordPress
  6. * @subpackage Administration
  7. */
  8. // don't load directly
  9. if ( ! defined( 'ABSPATH' ) ) {
  10. die( '-1' );
  11. }
  12. // Back compat hooks
  13. if ( 'category' == $taxonomy ) {
  14. /**
  15. * Fires before the Edit Category form.
  16. *
  17. * @since 2.1.0
  18. * @deprecated 3.0.0 Use {$taxonomy}_pre_edit_form instead.
  19. *
  20. * @param WP_Term $tag Current category term object.
  21. */
  22. do_action( 'edit_category_form_pre', $tag );
  23. } elseif ( 'link_category' == $taxonomy ) {
  24. /**
  25. * Fires before the Edit Link Category form.
  26. *
  27. * @since 2.3.0
  28. * @deprecated 3.0.0 Use {$taxonomy}_pre_edit_form instead.
  29. *
  30. * @param WP_Term $tag Current link category term object.
  31. */
  32. do_action( 'edit_link_category_form_pre', $tag );
  33. } else {
  34. /**
  35. * Fires before the Edit Tag form.
  36. *
  37. * @since 2.5.0
  38. * @deprecated 3.0.0 Use {$taxonomy}_pre_edit_form instead.
  39. *
  40. * @param WP_Term $tag Current tag term object.
  41. */
  42. do_action( 'edit_tag_form_pre', $tag );
  43. }
  44. /**
  45. * Use with caution, see https://developer.wordpress.org/reference/functions/wp_reset_vars/
  46. */
  47. wp_reset_vars( array( 'wp_http_referer' ) );
  48. $wp_http_referer = remove_query_arg( array( 'action', 'message', 'tag_ID' ), $wp_http_referer );
  49. /** Also used by Edit Tags */
  50. require_once( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' );
  51. /**
  52. * Fires before the Edit Term form for all taxonomies.
  53. *
  54. * The dynamic portion of the hook name, `$taxonomy`, refers to
  55. * the taxonomy slug.
  56. *
  57. * @since 3.0.0
  58. *
  59. * @param WP_Term $tag Current taxonomy term object.
  60. * @param string $taxonomy Current $taxonomy slug.
  61. */
  62. do_action( "{$taxonomy}_pre_edit_form", $tag, $taxonomy ); ?>
  63. <div class="wrap">
  64. <h1><?php echo $tax->labels->edit_item; ?></h1>
  65. <?php
  66. $class = ( isset( $msg ) && 5 === $msg ) ? 'error' : 'success';
  67. if ( $message ) {
  68. ?>
  69. <div id="message" class="notice notice-<?php echo $class; ?>">
  70. <p><strong><?php echo $message; ?></strong></p>
  71. <?php if ( $wp_http_referer ) { ?>
  72. <p><a href="<?php echo esc_url( wp_validate_redirect( esc_url_raw( $wp_http_referer ), admin_url( 'term.php?taxonomy=' . $taxonomy ) ) ); ?>">
  73. <?php echo esc_html( $tax->labels->back_to_items ); ?>
  74. </a></p>
  75. <?php } ?>
  76. </div>
  77. <?php
  78. }
  79. ?>
  80. <div id="ajax-response"></div>
  81. <form name="edittag" id="edittag" method="post" action="edit-tags.php" class="validate"
  82. <?php
  83. /**
  84. * Fires inside the Edit Term form tag.
  85. *
  86. * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
  87. *
  88. * @since 3.7.0
  89. */
  90. do_action( "{$taxonomy}_term_edit_form_tag" );
  91. ?>
  92. >
  93. <input type="hidden" name="action" value="editedtag"/>
  94. <input type="hidden" name="tag_ID" value="<?php echo esc_attr( $tag_ID ); ?>"/>
  95. <input type="hidden" name="taxonomy" value="<?php echo esc_attr( $taxonomy ); ?>"/>
  96. <?php
  97. wp_original_referer_field( true, 'previous' );
  98. wp_nonce_field( 'update-tag_' . $tag_ID );
  99. /**
  100. * Fires at the beginning of the Edit Term form.
  101. *
  102. * At this point, the required hidden fields and nonces have already been output.
  103. *
  104. * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
  105. *
  106. * @since 4.5.0
  107. *
  108. * @param WP_Term $tag Current taxonomy term object.
  109. * @param string $taxonomy Current $taxonomy slug.
  110. */
  111. do_action( "{$taxonomy}_term_edit_form_top", $tag, $taxonomy );
  112. $tag_name_value = '';
  113. if ( isset( $tag->name ) ) {
  114. $tag_name_value = esc_attr( $tag->name );
  115. }
  116. ?>
  117. <table class="form-table" role="presentation">
  118. <tr class="form-field form-required term-name-wrap">
  119. <th scope="row"><label for="name"><?php _ex( 'Name', 'term name' ); ?></label></th>
  120. <td><input name="name" id="name" type="text" value="<?php echo $tag_name_value; ?>" size="40" aria-required="true" />
  121. <p class="description"><?php _e( 'The name is how it appears on your site.' ); ?></p></td>
  122. </tr>
  123. <?php if ( ! global_terms_enabled() ) { ?>
  124. <tr class="form-field term-slug-wrap">
  125. <th scope="row"><label for="slug"><?php _e( 'Slug' ); ?></label></th>
  126. <?php
  127. /**
  128. * Filters the editable slug.
  129. *
  130. * Note: This is a multi-use hook in that it is leveraged both for editable
  131. * post URIs and term slugs.
  132. *
  133. * @since 2.6.0
  134. * @since 4.4.0 The `$tag` parameter was added.
  135. *
  136. * @param string $slug The editable slug. Will be either a term slug or post URI depending
  137. * upon the context in which it is evaluated.
  138. * @param WP_Term|WP_Post $tag Term or WP_Post object.
  139. */
  140. $slug = isset( $tag->slug ) ? apply_filters( 'editable_slug', $tag->slug, $tag ) : '';
  141. ?>
  142. <td><input name="slug" id="slug" type="text" value="<?php echo esc_attr( $slug ); ?>" size="40" />
  143. <p class="description"><?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></td>
  144. </tr>
  145. <?php } ?>
  146. <?php if ( is_taxonomy_hierarchical( $taxonomy ) ) : ?>
  147. <tr class="form-field term-parent-wrap">
  148. <th scope="row"><label for="parent"><?php echo esc_html( $tax->labels->parent_item ); ?></label></th>
  149. <td>
  150. <?php
  151. $dropdown_args = array(
  152. 'hide_empty' => 0,
  153. 'hide_if_empty' => false,
  154. 'taxonomy' => $taxonomy,
  155. 'name' => 'parent',
  156. 'orderby' => 'name',
  157. 'selected' => $tag->parent,
  158. 'exclude_tree' => $tag->term_id,
  159. 'hierarchical' => true,
  160. 'show_option_none' => __( 'None' ),
  161. );
  162. /** This filter is documented in wp-admin/edit-tags.php */
  163. $dropdown_args = apply_filters( 'taxonomy_parent_dropdown_args', $dropdown_args, $taxonomy, 'edit' );
  164. wp_dropdown_categories( $dropdown_args );
  165. ?>
  166. <?php if ( 'category' == $taxonomy ) : ?>
  167. <p class="description"><?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>
  168. <?php else : ?>
  169. <p class="description"><?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>
  170. <?php endif; ?>
  171. </td>
  172. </tr>
  173. <?php endif; // is_taxonomy_hierarchical() ?>
  174. <tr class="form-field term-description-wrap">
  175. <th scope="row"><label for="description"><?php _e( 'Description' ); ?></label></th>
  176. <td><textarea name="description" id="description" rows="5" cols="50" class="large-text"><?php echo $tag->description; // textarea_escaped ?></textarea>
  177. <p class="description"><?php _e( 'The description is not prominent by default; however, some themes may show it.' ); ?></p></td>
  178. </tr>
  179. <?php
  180. // Back compat hooks
  181. if ( 'category' == $taxonomy ) {
  182. /**
  183. * Fires after the Edit Category form fields are displayed.
  184. *
  185. * @since 2.9.0
  186. * @deprecated 3.0.0 Use {$taxonomy}_edit_form_fields instead.
  187. *
  188. * @param WP_Term $tag Current category term object.
  189. */
  190. do_action( 'edit_category_form_fields', $tag );
  191. } elseif ( 'link_category' == $taxonomy ) {
  192. /**
  193. * Fires after the Edit Link Category form fields are displayed.
  194. *
  195. * @since 2.9.0
  196. * @deprecated 3.0.0 Use {$taxonomy}_edit_form_fields instead.
  197. *
  198. * @param WP_Term $tag Current link category term object.
  199. */
  200. do_action( 'edit_link_category_form_fields', $tag );
  201. } else {
  202. /**
  203. * Fires after the Edit Tag form fields are displayed.
  204. *
  205. * @since 2.9.0
  206. * @deprecated 3.0.0 Use {$taxonomy}_edit_form_fields instead.
  207. *
  208. * @param WP_Term $tag Current tag term object.
  209. */
  210. do_action( 'edit_tag_form_fields', $tag );
  211. }
  212. /**
  213. * Fires after the Edit Term form fields are displayed.
  214. *
  215. * The dynamic portion of the hook name, `$taxonomy`, refers to
  216. * the taxonomy slug.
  217. *
  218. * @since 3.0.0
  219. *
  220. * @param WP_Term $tag Current taxonomy term object.
  221. * @param string $taxonomy Current taxonomy slug.
  222. */
  223. do_action( "{$taxonomy}_edit_form_fields", $tag, $taxonomy );
  224. ?>
  225. </table>
  226. <?php
  227. // Back compat hooks
  228. if ( 'category' == $taxonomy ) {
  229. /** This action is documented in wp-admin/edit-tags.php */
  230. do_action( 'edit_category_form', $tag );
  231. } elseif ( 'link_category' == $taxonomy ) {
  232. /** This action is documented in wp-admin/edit-tags.php */
  233. do_action( 'edit_link_category_form', $tag );
  234. } else {
  235. /**
  236. * Fires at the end of the Edit Term form.
  237. *
  238. * @since 2.5.0
  239. * @deprecated 3.0.0 Use {$taxonomy}_edit_form instead.
  240. *
  241. * @param WP_Term $tag Current taxonomy term object.
  242. */
  243. do_action( 'edit_tag_form', $tag );
  244. }
  245. /**
  246. * Fires at the end of the Edit Term form for all taxonomies.
  247. *
  248. * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
  249. *
  250. * @since 3.0.0
  251. *
  252. * @param WP_Term $tag Current taxonomy term object.
  253. * @param string $taxonomy Current taxonomy slug.
  254. */
  255. do_action( "{$taxonomy}_edit_form", $tag, $taxonomy );
  256. ?>
  257. <div class="edit-tag-actions">
  258. <?php submit_button( __( 'Update' ), 'primary', null, false ); ?>
  259. <?php if ( current_user_can( 'delete_term', $tag->term_id ) ) : ?>
  260. <span id="delete-link">
  261. <a class="delete" href="<?php echo admin_url( wp_nonce_url( "edit-tags.php?action=delete&taxonomy=$taxonomy&tag_ID=$tag->term_id", 'delete-tag_' . $tag->term_id ) ); ?>"><?php _e( 'Delete' ); ?></a>
  262. </span>
  263. <?php endif; ?>
  264. </div>
  265. </form>
  266. </div>
  267. <?php if ( ! wp_is_mobile() ) : ?>
  268. <script type="text/javascript">
  269. try{document.forms.edittag.name.focus();}catch(e){}
  270. </script>
  271. <?php
  272. endif;