WordPress.org

Make WordPress Core

Ticket #14877: 14877.diff

File 14877.diff, 28.6 KB (added by benbalter, 2 years ago)

Rough 1st pass -- no JS, no quick-edit

  • wp-includes/taxonomy.php

     
    4343 
    4444        register_taxonomy( 'category', 'post', array( 
    4545                'hierarchical' => true, 
    46                 'query_var' => 'category_name', 
    47                 'rewrite' => $rewrite['category'], 
    48                 'public' => true, 
    49                 'show_ui' => true, 
    50                 '_builtin' => true, 
     46                'query_var'    => 'category_name', 
     47                'rewrite'      => $rewrite['category'], 
     48                'public'       => true, 
     49                'show_ui'      => true, 
     50                '_builtin'     => true, 
     51                'input'        => 'checkbox', 
    5152        ) ); 
    5253 
    5354        register_taxonomy( 'post_tag', 'post', array( 
    54                 'hierarchical' => false, 
    55                 'query_var' => 'tag', 
    56                 'rewrite' => $rewrite['post_tag'], 
    57                 'public' => true, 
    58                 'show_ui' => true, 
    59                 '_builtin' => true, 
     55                'hierarchical'  => false, 
     56                'query_var'     => 'tag', 
     57                'rewrite'       => $rewrite['post_tag'], 
     58                'public'        => true, 
     59                'show_ui'       => true, 
     60                '_builtin'      => true, 
     61                'input'         => 'text', 
    6062        ) ); 
    6163 
    6264        register_taxonomy( 'nav_menu', 'nav_menu_item', array( 
    63                 'public' => false, 
    64                 'hierarchical' => false, 
    65                 'labels' => array( 
    66                         'name' => __( 'Navigation Menus' ), 
    67                         'singular_name' => __( 'Navigation Menu' ), 
     65                'public'            => false, 
     66                'hierarchical'      => false, 
     67                'labels'            => array( 
     68                        'name'             => __( 'Navigation Menus' ), 
     69                        'singular_name'    => __( 'Navigation Menu' ), 
    6870                ), 
    69                 'query_var' => false, 
    70                 'rewrite' => false, 
    71                 'show_ui' => false, 
    72                 '_builtin' => true, 
     71                'query_var'         => false, 
     72                'rewrite'           => false, 
     73                'show_ui'           => false, 
     74                '_builtin'          => true, 
    7375                'show_in_nav_menus' => false, 
     76                'input'             => null, 
    7477        ) ); 
    7578 
    7679        register_taxonomy( 'link_category', 'link', array( 
    77                 'hierarchical' => false, 
    78                 'labels' => array( 
    79                         'name' => __( 'Link Categories' ), 
    80                         'singular_name' => __( 'Link Category' ), 
    81                         'search_items' => __( 'Search Link Categories' ), 
    82                         'popular_items' => null, 
    83                         'all_items' => __( 'All Link Categories' ), 
    84                         'edit_item' => __( 'Edit Link Category' ), 
    85                         'update_item' => __( 'Update Link Category' ), 
    86                         'add_new_item' => __( 'Add New Link Category' ), 
    87                         'new_item_name' => __( 'New Link Category Name' ), 
     80                'hierarchical'                => false, 
     81                'labels'                      => array( 
     82                        'name'                       => __( 'Link Categories' ), 
     83                        'singular_name'              => __( 'Link Category' ), 
     84                        'search_items'               => __( 'Search Link Categories' ), 
     85                        'popular_items'              => null, 
     86                        'all_items'                  => __( 'All Link Categories' ), 
     87                        'edit_item'                  => __( 'Edit Link Category' ), 
     88                        'update_item'                => __( 'Update Link Category' ), 
     89                        'add_new_item'               => __( 'Add New Link Category' ), 
     90                        'new_item_name'              => __( 'New Link Category Name' ), 
    8891                        'separate_items_with_commas' => null, 
    89                         'add_or_remove_items' => null, 
    90                         'choose_from_most_used' => null, 
     92                        'add_or_remove_items'        => null, 
     93                        'choose_from_most_used'      => null, 
    9194                ), 
    92                 'query_var' => false, 
    93                 'rewrite' => false, 
    94                 'public' => false, 
    95                 'show_ui' => false, 
    96                 '_builtin' => true, 
     95                'query_var'                   => false, 
     96                'rewrite'                     => false, 
     97                'public'                      => false, 
     98                'show_ui'                     => false, 
     99                '_builtin'                    => true, 
     100                'input'                       => null, 
    97101        ) ); 
    98102 
    99103        register_taxonomy( 'post_format', 'post', array( 
    100                 'public' => true, 
    101                 'hierarchical' => false, 
    102                 'labels' => array( 
    103                         'name' => _x( 'Format', 'post format' ), 
    104                         'singular_name' => _x( 'Format', 'post format' ), 
     104                'public'            => true, 
     105                'hierarchical'      => false, 
     106                'labels'            => array( 
     107                        'name'             => _x( 'Format', 'post format' ), 
     108                        'singular_name'    => _x( 'Format', 'post format' ), 
    105109                ), 
    106                 'query_var' => true, 
    107                 'rewrite' => $rewrite['post_format'], 
    108                 'show_ui' => false, 
    109                 '_builtin' => true, 
     110                'query_var'         => true, 
     111                'rewrite'           => $rewrite['post_format'], 
     112                'show_ui'           => false, 
     113                '_builtin'          => true, 
    110114                'show_in_nav_menus' => current_theme_supports( 'post-formats' ), 
     115                'input'             => null, 
    111116        ) ); 
     117 
    112118} 
     119 
    113120add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority 
    114121 
    115122/** 
     
    292299 * 
    293300 * labels - An array of labels for this taxonomy. You can see accepted values in {@link get_taxonomy_labels()}. By default tag labels are used for non-hierarchical types and category labels for hierarchical ones. 
    294301 * 
     302 * input - the type of metabox to display on the post edit screen. Choices include text (tags), checkbox (categories), radio (exclusive), or dropdown (exclusive). Note: exclusive inputs limit the user to selecting only one term. 
     303 * 
    295304 * @package WordPress 
    296305 * @subpackage Taxonomy 
    297306 * @since 2.3.0 
     
    308317        if ( ! is_array($wp_taxonomies) ) 
    309318                $wp_taxonomies = array(); 
    310319 
    311         $defaults = array(      'hierarchical' => false, 
     320        $defaults = array(       
     321                                                'hierarchical'          => false, 
    312322                                                'update_count_callback' => '', 
    313                                                 'rewrite' => true, 
    314                                                 'query_var' => $taxonomy, 
    315                                                 'public' => true, 
    316                                                 'show_ui' => null, 
    317                                                 'show_tagcloud' => null, 
    318                                                 '_builtin' => false, 
    319                                                 'labels' => array(), 
    320                                                 'capabilities' => array(), 
    321                                                 'show_in_nav_menus' => null, 
     323                                                'rewrite'               => true, 
     324                                                'query_var'             => $taxonomy, 
     325                                                'public'                => true, 
     326                                                'show_ui'               => null, 
     327                                                'show_tagcloud'         => null, 
     328                                                '_builtin'              => false, 
     329                                                'labels'                => array(), 
     330                                                'capabilities'          => array(), 
     331                                                'show_in_nav_menus'     => null, 
     332                                                'input'                 => 'input', 
    322333                                        ); 
     334 
    323335        $args = wp_parse_args($args, $defaults); 
    324336 
    325337        if ( false !== $args['query_var'] && !empty($wp) ) { 
     
    348360 
    349361        if ( is_null($args['show_ui']) ) 
    350362                $args['show_ui'] = $args['public']; 
     363                 
     364        //if no input is specified and UI is not used, set default to null to avoid confusion 
     365        if ( !$args['show_ui'] && is_null( $args['input'] ) ) 
     366                $args['input'] = null; 
    351367 
    352368        // Whether to show this type in nav-menus.php. Defaults to the setting for public. 
    353369        if ( null === $args['show_in_nav_menus'] ) 
     
    18811897                $object_ids = array($object_ids); 
    18821898        $object_ids = array_map('intval', $object_ids); 
    18831899 
    1884         $defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all'); 
     1900        $defaults = array( 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'all' ); 
    18851901        $args = wp_parse_args( $args, $defaults ); 
    18861902 
    18871903        $terms = array(); 
     
    21462162 
    21472163        if ( ! taxonomy_exists($taxonomy) ) 
    21482164                return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); 
     2165         
     2166        //if this is an exclusive taxonomy, and users has passed more than 1 term, only accept the first 
     2167        if ( is_array( $terms ) && in_array( get_taxonomy( $taxonomy )->input, array( 'dropdown', 'radio' ) ) ) 
     2168                $terms = array_shift( $terms ); 
    21492169 
    21502170        if ( !is_array($terms) ) 
    21512171                $terms = array($terms); 
  • wp-includes/post.php

     
    24102410 * @param bool $wp_error Optional. Allow return of WP_Error on failure. 
    24112411 * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success. 
    24122412 */ 
    2413 function wp_insert_post($postarr, $wp_error = false) { 
     2413function wp_insert_post($postarr, $wp_error = false) {  
    24142414        global $wpdb, $user_ID; 
    24152415 
    24162416        $defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID, 
     
    26112611        if ( !empty($tax_input) ) { 
    26122612                foreach ( $tax_input as $taxonomy => $tags ) { 
    26132613                        $taxonomy_obj = get_taxonomy($taxonomy); 
    2614                         if ( is_array($tags) ) // array = hierarchical, string = non-hierarchical. 
     2614 
     2615                        // array = hierarchical, string = non-hierarchical. 
     2616                        if ( is_array($tags) )  
    26152617                                $tags = array_filter($tags); 
     2618                         
     2619                        //exclusive taxonomies pass IDs rather than slugs, typecast to prevent confusion 
     2620                        if ( $taxonomy_obj->input == 'radio' || $taxonomy_obj->input == 'dropdown' ) 
     2621                                $tags = array( (int) $tags ); 
     2622 
    26162623                        if ( current_user_can($taxonomy_obj->cap->assign_terms) ) 
    26172624                                wp_set_post_terms( $post_ID, $tags, $taxonomy ); 
     2625 
    26182626                } 
    26192627        } 
    26202628 
  • wp-admin/includes/template.php

     
    4040                        $name = 'post_category'; 
    4141                else 
    4242                        $name = 'tax_input['.$taxonomy.']'; 
    43  
     43                         
     44                //if this is not a radio input, each checkbox should be individually named with []'s 
     45                if ( $input != 'radio' ) 
     46                        $name .= '[]'; 
     47                 
    4448                $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; 
    45                 $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>'; 
     49                $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="'.$input.'" name="'.$name.'" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>'; 
    4650        } 
    4751 
    4852        function end_el( &$output, $category, $depth = 0, $args = array() ) { 
     
    8791                'popular_cats' => false, 
    8892                'walker' => null, 
    8993                'taxonomy' => 'category', 
    90                 'checked_ontop' => true 
     94                'checked_ontop' => true, 
    9195        ); 
    9296        extract( wp_parse_args($args, $defaults), EXTR_SKIP ); 
    9397 
     
    120124        } else { 
    121125                $categories = (array) get_terms($taxonomy, array('get' => 'all')); 
    122126        } 
     127         
     128        //set input type 
     129        if ( $tax->input == 'radio' ) 
     130                $args['input'] = 'radio'; 
     131        else 
     132                $args['input'] = 'checkbox'; 
    123133 
    124134        if ( $checked_ontop ) { 
    125135                // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) 
  • wp-admin/includes/meta-boxes.php

     
    232232} 
    233233 
    234234/** 
    235  * Display post format form elements. 
    236  * 
    237  * @since 3.1.0 
    238  * 
     235 * Renders metabox for a given taxonomy 
     236 * Taxonomy should be passed via the initial filter as an argument within the box array 
     237 * @since 3.4 
    239238 * @param object $post 
     239 * @param array $box 
    240240 */ 
    241 function post_format_meta_box( $post, $box ) { 
    242         if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) ) : 
    243         $post_formats = get_theme_support( 'post-formats' ); 
     241function post_taxonomy_meta_box( $post, $box ) { 
    244242 
    245         if ( is_array( $post_formats[0] ) ) : 
    246                 $post_format = get_post_format( $post->ID ); 
    247                 if ( !$post_format ) 
    248                         $post_format = '0'; 
    249                 // Add in the current one if it isn't there yet, in case the current theme doesn't support it 
    250                 if ( $post_format && !in_array( $post_format, $post_formats[0] ) ) 
    251                         $post_formats[0][] = $post_format; 
    252         ?> 
    253         <div id="post-formats-select"> 
    254                 <input type="radio" name="post_format" class="post-format" id="post-format-0" value="0" <?php checked( $post_format, '0' ); ?> /> <label for="post-format-0"><?php _e('Standard'); ?></label> 
    255                 <?php foreach ( $post_formats[0] as $format ) : ?> 
    256                 <br /><input type="radio" name="post_format" class="post-format" id="post-format-<?php echo esc_attr( $format ); ?>" value="<?php echo esc_attr( $format ); ?>" <?php checked( $post_format, $format ); ?> /> <label for="post-format-<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></label> 
    257                 <?php endforeach; ?><br /> 
    258         </div> 
    259         <?php endif; endif; 
     243        //default to tags if no taxonomy is passed       
     244        if ( !is_array( $box['args'] ) || !isset( $box['args']['taxonomy'] ) ) 
     245                $box['args']['taxonomy'] = 'post_tag'; 
     246                         
     247        $taxonomy = get_taxonomy( $box['args']['taxonomy'] ); 
     248 
     249        if ( !$taxonomy ) 
     250                return; 
     251 
     252        //try to call a native function for built-in input types 
     253        //otherwise, allow users to hook in and fire their own callback 
     254        if ( function_exists( "_{$taxonomy->input}_taxonomy_meta_box" ) ) 
     255                call_user_func( "_{$taxonomy->input}_taxonomy_meta_box", $post, $taxonomy ); 
     256        else 
     257                do_action( '{$taxonomy->input}_taxonomy_meta_box', $post, $taxonomy ); 
     258         
    260259} 
    261260 
    262261/** 
    263  * Display post tags form fields. 
    264  * 
    265  * @since 2.6.0 
    266  * 
    267  * @param object $post 
     262 * Help function to render text (tag-like) input taxonomy metaboxes 
     263 * @param object $post the post object 
     264 * @param object $taxonomy the taxonomy object 
     265 * @since 3.4 
    268266 */ 
    269 function post_tags_meta_box($post, $box) { 
    270         $defaults = array('taxonomy' => 'post_tag'); 
    271         if ( !isset($box['args']) || !is_array($box['args']) ) 
    272                 $args = array(); 
    273         else 
    274                 $args = $box['args']; 
    275         extract( wp_parse_args($args, $defaults), EXTR_SKIP ); 
    276         $tax_name = esc_attr($taxonomy); 
    277         $taxonomy = get_taxonomy($taxonomy); 
     267function _text_taxonomy_meta_box( $post, $taxonomy ) { 
     268 
     269        $tax_name = esc_attr( $taxonomy->name ); 
    278270        $disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : ''; 
    279271        $comma = _x( ',', 'tag delimiter' ); 
     272         
    280273?> 
    281274<div class="tagsdiv" id="<?php echo $tax_name; ?>"> 
    282275        <div class="jaxtag"> 
     
    295288        </div> 
    296289        <div class="tagchecklist"></div> 
    297290</div> 
    298 <?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?> 
     291<?php if ( current_user_can( $taxonomy->cap->assign_terms ) ) : ?> 
    299292<p class="hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-<?php echo $tax_name; ?>"><?php echo $taxonomy->labels->choose_from_most_used; ?></a></p> 
    300 <?php endif; ?> 
    301 <?php 
     293<?php endif; 
    302294} 
    303295 
    304296/** 
    305  * Display post categories form fields. 
    306  * 
    307  * @since 2.6.0 
    308  * 
    309  * @param object $post 
     297 * Helper function to create checkbox (category) input metaboxes 
     298 * @param object $post the post object 
     299 * @param object $taxonomy the taxonomy object 
     300 * @since 3.4 
    310301 */ 
    311 function post_categories_meta_box( $post, $box ) { 
    312         $defaults = array('taxonomy' => 'category'); 
    313         if ( !isset($box['args']) || !is_array($box['args']) ) 
    314                 $args = array(); 
    315         else 
    316                 $args = $box['args']; 
    317         extract( wp_parse_args($args, $defaults), EXTR_SKIP ); 
    318         $tax = get_taxonomy($taxonomy); 
    319  
    320         ?> 
    321         <div id="taxonomy-<?php echo $taxonomy; ?>" class="categorydiv"> 
    322                 <ul id="<?php echo $taxonomy; ?>-tabs" class="category-tabs"> 
    323                         <li class="tabs"><a href="#<?php echo $taxonomy; ?>-all" tabindex="3"><?php echo $tax->labels->all_items; ?></a></li> 
    324                         <li class="hide-if-no-js"><a href="#<?php echo $taxonomy; ?>-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li> 
     302function _checkbox_taxonomy_meta_box( $post, $taxonomy ) { 
     303?> 
     304        <div id="taxonomy-<?php echo $taxonomy->name; ?>" class="categorydiv"> 
     305                <ul id="<?php echo $taxonomy->name; ?>-tabs" class="category-tabs"> 
     306                        <li class="tabs"><a href="#<?php echo $taxonomy->name; ?>-all" tabindex="3"><?php echo $taxonomy->labels->all_items; ?></a></li> 
     307                        <li class="hide-if-no-js"><a href="#<?php echo $taxonomy->name; ?>-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li> 
    325308                </ul> 
    326309 
    327                 <div id="<?php echo $taxonomy; ?>-pop" class="tabs-panel" style="display: none;"> 
    328                         <ul id="<?php echo $taxonomy; ?>checklist-pop" class="categorychecklist form-no-clear" > 
    329                                 <?php $popular_ids = wp_popular_terms_checklist($taxonomy); ?> 
     310                <div id="<?php echo $taxonomy->name; ?>-pop" class="tabs-panel" style="display: none;"> 
     311                        <ul id="<?php echo $taxonomy->name; ?>checklist-pop" class="categorychecklist form-no-clear" > 
     312                                <?php $popular_ids = wp_popular_terms_checklist( $taxonomy->name ); ?> 
    330313                        </ul> 
    331314                </div> 
    332315 
    333                 <div id="<?php echo $taxonomy; ?>-all" class="tabs-panel"> 
    334                         <?php 
    335             $name = ( $taxonomy == 'category' ) ? 'post_category' : 'tax_input[' . $taxonomy . ']'; 
     316                <div id="<?php echo $taxonomy->name; ?>-all" class="tabs-panel"> 
     317<?php 
     318            $name = ( $taxonomy->name == 'category' ) ? 'post_category' : 'tax_input[' . $taxonomy->name . ']'; 
    336319            echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks. 
    337320            ?> 
    338                         <ul id="<?php echo $taxonomy; ?>checklist" class="list:<?php echo $taxonomy?> categorychecklist form-no-clear"> 
    339                                 <?php wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids ) ) ?> 
     321                        <ul id="<?php echo $taxonomy->name; ?>checklist" class="list:<?php echo $taxonomy->name?> categorychecklist form-no-clear"> 
     322                                <?php wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy->name, 'popular_cats' => $popular_ids ) ) ?> 
    340323                        </ul> 
    341324                </div> 
    342         <?php if ( current_user_can($tax->cap->edit_terms) ) : ?> 
    343                         <div id="<?php echo $taxonomy; ?>-adder" class="wp-hidden-children"> 
     325<?php   if ( current_user_can($taxonomy->cap->edit_terms) ) : ?> 
     326                        <div id="<?php echo $taxonomy->name; ?>-adder" class="wp-hidden-children"> 
    344327                                <h4> 
    345                                         <a id="<?php echo $taxonomy; ?>-add-toggle" href="#<?php echo $taxonomy; ?>-add" class="hide-if-no-js" tabindex="3"> 
     328                                        <a id="<?php echo $taxonomy->name; ?>-add-toggle" href="#<?php echo $taxonomy->name; ?>-add" class="hide-if-no-js" tabindex="3"> 
    346329                                                <?php 
    347330                                                        /* translators: %s: add new taxonomy label */ 
    348                                                         printf( __( '+ %s' ), $tax->labels->add_new_item ); 
     331                                                        printf( __( '+ %s' ), $taxonomy->labels->add_new_item ); 
    349332                                                ?> 
    350333                                        </a> 
    351334                                </h4> 
    352                                 <p id="<?php echo $taxonomy; ?>-add" class="category-add wp-hidden-child"> 
    353                                         <label class="screen-reader-text" for="new<?php echo $taxonomy; ?>"><?php echo $tax->labels->add_new_item; ?></label> 
    354                                         <input type="text" name="new<?php echo $taxonomy; ?>" id="new<?php echo $taxonomy; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/> 
    355                                         <label class="screen-reader-text" for="new<?php echo $taxonomy; ?>_parent"> 
    356                                                 <?php echo $tax->labels->parent_item_colon; ?> 
     335                                <p id="<?php echo $taxonomy->name; ?>-add" class="category-add wp-hidden-child"> 
     336                                        <label class="screen-reader-text" for="new<?php echo $taxonomy->name; ?>"><?php echo $taxonomy->labels->add_new_item; ?></label> 
     337                                        <input type="text" name="new<?php echo $taxonomy->name; ?>" id="new<?php echo $taxonomy->name; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $taxonomy->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/> 
     338                                        <label class="screen-reader-text" for="new<?php echo $taxonomy->name; ?>_parent"> 
     339                                                <?php echo $taxonomy->name->labels->parent_item_colon; ?> 
    357340                                        </label> 
    358                                         <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?> 
    359                                         <input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-sumbit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" /> 
    360                                         <?php wp_nonce_field( 'add-'.$taxonomy, '_ajax_nonce-add-'.$taxonomy, false ); ?> 
    361                                         <span id="<?php echo $taxonomy; ?>-ajax-response"></span> 
     341                                        <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $taxonomy->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?> 
     342                                        <input type="button" id="<?php echo $taxonomy->name; ?>-add-submit" class="add:<?php echo $taxonomy->name ?>checklist:<?php echo $taxonomy->name ?>-add button category-add-sumbit" value="<?php echo esc_attr( $taxonomy->labels->add_new_item ); ?>" tabindex="3" /> 
     343                                        <?php wp_nonce_field( 'add-'.$taxonomy->name, '_ajax_nonce-add-'.$taxonomy->name, false ); ?> 
     344                                        <span id="<?php echo $taxonomy->name; ?>-ajax-response"></span> 
    362345                                </p> 
    363346                        </div> 
    364347                <?php endif; ?> 
    365348        </div> 
    366         <?php 
     349<?php 
    367350} 
    368351 
    369352/** 
     353 * Helper function to create radio (exclusive) input taxonomy metaboxes 
     354 * @param object $post the post object 
     355 * @param object $taxonomy the taxonomy object 
     356 * @since 3.4 
     357 */ 
     358function _radio_taxonomy_meta_box( $post, $taxonomy ) { 
     359 
     360        $selected = wp_get_post_terms( $post->ID, $taxonomy->name ); 
     361        if ( $selected ) 
     362                $selected = array( $selected[0]->ID ); 
     363                 
     364?> 
     365        <div id="taxonomy-<?php echo $taxonomy->name; ?>" class="categorydiv"> 
     366                <ul id="<?php echo $taxonomy->name; ?>checklist" class="list:<?php echo $taxonomy->name?> categorychecklist form-no-clear"> 
     367                        <li id='<?php echo $taxonomy->name; ?>-none'><label class="selectit"><input value="" type="radio" name="tax_input[radio]" id="in-radio-none" <?php checked( !$selected ); ?> /> <?php _e( 'None' ); ?></label></li> 
     368<?php 
     369                 
     370        wp_terms_checklist( $post->ID, array(  
     371                'taxonomy' => $taxonomy->name,  
     372                'popular_cats' => $selected, 
     373         ) ); 
     374          
     375         ?> 
     376                </ul> 
     377<?php   if ( current_user_can($taxonomy->cap->edit_terms) ) : ?> 
     378                        <div id="<?php echo $taxonomy->name; ?>-adder" class="wp-hidden-children"> 
     379                                <h4> 
     380                                        <a id="<?php echo $taxonomy->name; ?>-add-toggle" href="#<?php echo $taxonomy->name; ?>-add" class="hide-if-no-js" tabindex="3"> 
     381                                                <?php 
     382                                                        /* translators: %s: add new taxonomy label */ 
     383                                                        printf( __( '+ %s' ), $taxonomy->labels->add_new_item ); 
     384                                                ?> 
     385                                        </a> 
     386                                </h4> 
     387                                <p id="<?php echo $taxonomy->name; ?>-add" class="category-add wp-hidden-child"> 
     388                                        <label class="screen-reader-text" for="new<?php echo $taxonomy->name; ?>"><?php echo $taxonomy->labels->add_new_item; ?></label> 
     389                                        <input type="text" name="new<?php echo $taxonomy->name; ?>" id="new<?php echo $taxonomy->name; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $taxonomy->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/> 
     390                                        <label class="screen-reader-text" for="new<?php echo $taxonomy->name; ?>_parent"> 
     391                                                <?php echo $taxonomy->name->labels->parent_item_colon; ?> 
     392                                        </label> 
     393                                        <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $taxonomy->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?> 
     394                                        <input type="button" id="<?php echo $taxonomy->name; ?>-add-submit" class="add:<?php echo $taxonomy->name ?>checklist:<?php echo $taxonomy->name ?>-add button category-add-sumbit" value="<?php echo esc_attr( $taxonomy->labels->add_new_item ); ?>" tabindex="3" /> 
     395                                        <?php wp_nonce_field( 'add-'.$taxonomy->name, '_ajax_nonce-add-'.$taxonomy->name, false ); ?> 
     396                                        <span id="<?php echo $taxonomy->name; ?>-ajax-response"></span> 
     397                                </p> 
     398                        </div> 
     399                <?php endif; ?> 
     400         </div> 
     401<?php 
     402          
     403} 
     404 
     405/** 
     406 * Helper function to create dropdown (exclusive) input taxonomy metaboxes 
     407 * @param object $post the post object 
     408 * @param object $taxonomy the taxonomy object 
     409 * @since 3.4 
     410 */ 
     411function _dropdown_taxonomy_meta_box( $post, $taxonomy ) { 
     412?> 
     413        <div id="taxonomy-<?php echo $taxonomy->name; ?>" class="categorydiv"> 
     414<?php 
     415         
     416        $selected = wp_get_post_terms( $post->ID, $taxonomy->name ); 
     417        if ( $selected ) 
     418                $selected = $selected[0]->term_id; 
     419                 
     420        wp_dropdown_categories( array(  
     421                'taxonomy' => $taxonomy->name, 
     422                'show_option_none' => ' ', 
     423                'orderby' => 'slug', 
     424                'selected' => $selected, 
     425                'hierarchical' => $taxonomy->hierarchical, 
     426                'hide_empty' => false, 
     427                'name' => "tax_input[{$taxonomy->name}]", 
     428        ) ); 
     429         
     430        if ( current_user_can($taxonomy->cap->edit_terms) ) : 
     431        ?> 
     432                        <div id="<?php echo $taxonomy->name; ?>-adder" class="wp-hidden-children"> 
     433                                <h4> 
     434                                        <a id="<?php echo $taxonomy->name; ?>-add-toggle" href="#<?php echo $taxonomy->name; ?>-add" class="hide-if-no-js" tabindex="3"> 
     435                                                <?php 
     436                                                        /* translators: %s: add new taxonomy label */ 
     437                                                        printf( __( '+ %s' ), $taxonomy->labels->add_new_item ); 
     438                                                ?> 
     439                                        </a> 
     440                                </h4> 
     441                                <p id="<?php echo $taxonomy->name; ?>-add" class="category-add wp-hidden-child"> 
     442                                        <label class="screen-reader-text" for="new<?php echo $taxonomy->name; ?>"><?php echo $taxonomy->labels->add_new_item; ?></label> 
     443                                        <input type="text" name="new<?php echo $taxonomy->name; ?>" id="new<?php echo $taxonomy->name; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $taxonomy->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/> 
     444                                        <label class="screen-reader-text" for="new<?php echo $taxonomy->name; ?>_parent"> 
     445                                                <?php echo $taxonomy->name->labels->parent_item_colon; ?> 
     446                                        </label> 
     447                                        <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $taxonomy->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?> 
     448                                        <input type="button" id="<?php echo $taxonomy->name; ?>-add-submit" class="add:<?php echo $taxonomy->name ?>checklist:<?php echo $taxonomy->name ?>-add button category-add-sumbit" value="<?php echo esc_attr( $taxonomy->labels->add_new_item ); ?>" tabindex="3" /> 
     449                                        <?php wp_nonce_field( 'add-'.$taxonomy->name, '_ajax_nonce-add-'.$taxonomy->name, false ); ?> 
     450                                        <span id="<?php echo $taxonomy->name; ?>-ajax-response"></span> 
     451                                </p> 
     452                        </div> 
     453        <?php endif; ?> 
     454        </div> 
     455<?php 
     456} 
     457 
     458/** 
     459 * Display post format form elements. 
     460 * 
     461 * @since 3.1.0 
     462 * 
     463 * @param object $post 
     464 */ 
     465function post_format_meta_box( $post, $box ) { 
     466         
     467        if ( !current_theme_supports( 'post-formats' ) || !post_type_supports( $post->post_type, 'post-formats' ) ) 
     468                return; 
     469                 
     470        $post_formats = get_theme_support( 'post-formats' ); 
     471 
     472        if ( !is_array( $post_formats[0] ) ) 
     473                return; 
     474                 
     475        $post_format = get_post_format( $post->ID ); 
     476                 
     477        if ( !$post_format ) 
     478                $post_format = '0'; 
     479        // Add in the current one if it isn't there yet, in case the current theme doesn't support it 
     480        if ( $post_format && !in_array( $post_format, $post_formats[0] ) ) 
     481                $post_formats[0][] = $post_format; 
     482         
     483        ?> 
     484        <div id="post-formats-select"> 
     485                <input type="radio" name="post_format" class="post-format" id="post-format-0" value="0" <?php checked( $post_format, '0' ); ?> /> <label for="post-format-0"><?php _e('Standard'); ?></label> 
     486                <?php foreach ( $post_formats[0] as $format ) : ?> 
     487                <br /><input type="radio" name="post_format" class="post-format" id="post-format-<?php echo esc_attr( $format ); ?>" value="<?php echo esc_attr( $format ); ?>" <?php checked( $post_format, $format ); ?> /> <label for="post-format-<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></label> 
     488                <?php endforeach; ?><br /> 
     489        </div> 
     490<?php 
     491} 
     492 
     493/** 
     494 * Display post tags form fields. 
     495 * 
     496 * @since 2.6.0 
     497 * 
     498 * @param object $post 
     499 *  
     500 */ 
     501function post_tags_meta_box($post, $box) { 
     502 
     503        if ( !isset( $box['args'] ) || !is_array( $box['args'] ) ) 
     504                $box['args'] = array(); 
     505 
     506        $box['args']['taxonomy'] = 'post_tag'; 
     507         
     508        _deprecated_function( 'post_tags_meta_box', '3.4', 'post_taxonomy_meta_box' ); 
     509        post_taxonomy_meta_box( $post, $box ); 
     510         
     511} 
     512 
     513/** 
     514 * Display post categories form fields. 
     515 * 
     516 * @since 2.6.0 
     517 * 
     518 * @param object $post 
     519 */ 
     520function post_categories_meta_box( $post, $box ) { 
     521 
     522        if ( !isset( $box['args'] ) || !is_array( $box['args'] ) ) 
     523                $box['args'] = array(); 
     524 
     525        $box['args']['taxonomy'] = 'category'; 
     526 
     527        _deprecated_function( 'post_categories_meta_box', '3.4', 'post_taxonomy_meta_box' ); 
     528        post_taxonomy_meta_box( $post, $box ); 
     529 
     530} 
     531 
     532/** 
    370533 * Display post excerpt form fields. 
    371534 * 
    372535 * @since 2.6.0 
  • wp-admin/edit-form-advanced.php

     
    109109        $taxonomy = get_taxonomy($tax_name); 
    110110        if ( ! $taxonomy->show_ui ) 
    111111                continue; 
    112  
    113         $label = $taxonomy->labels->name; 
    114  
    115         if ( !is_taxonomy_hierarchical($tax_name) ) 
    116                 add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name )); 
    117         else 
    118                 add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name )); 
     112         
     113        add_meta_box( $tax_name . 'div', $taxonomy->labels->name, 'post_taxonomy_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name )); 
     114         
    119115} 
    120116 
    121117if ( post_type_supports($post_type, 'page-attributes') )