1 | Index: src/wp-admin/includes/meta-boxes.php |
---|
2 | =================================================================== |
---|
3 | --- src/wp-admin/includes/meta-boxes.php |
---|
4 | +++ src/wp-admin/includes/meta-boxes.php |
---|
5 | @@ -91,6 +91,12 @@ |
---|
6 | function post_submit_meta_box( $post, $args = array() ) { |
---|
7 | <?php _e( 'Status:' ); ?> <span id="post-status-display"> |
---|
8 | <?php |
---|
9 | |
---|
10 | + // get only statuses that belong to this post type |
---|
11 | + $post_stati = array_filter( get_post_stati( array(), 'objects' ), function( $args ) use ( $post ) { |
---|
12 | + return ( is_string( $args->post_type ) && in_array( $args->post_type, array( 'all', $post->post_type ) ) ) |
---|
13 | + || ( is_array ( $args->post_type ) && in_array( $post->post_type, $args->post_type ) ); |
---|
14 | + }); |
---|
15 | + |
---|
16 | switch ( $post->post_status ) { |
---|
17 | case 'private': |
---|
18 | _e( 'Privately Published' ); |
---|
19 | @@ -108,6 +114,13 @@ |
---|
20 | function post_submit_meta_box( $post, $args = array() ) { |
---|
21 | case 'auto-draft': |
---|
22 | _e( 'Draft' ); |
---|
23 | break; |
---|
24 | + |
---|
25 | + // default check if in stati array |
---|
26 | + default: if ( in_array( $post->post_status, $post_stati ) ) : |
---|
27 | + |
---|
28 | + // show the label |
---|
29 | + echo $post_stati[$post->post_status]->label; |
---|
30 | + endif; break; |
---|
31 | } |
---|
32 | ?> |
---|
33 | </span> |
---|
34 | @@ -124,7 +137,14 @@ |
---|
35 | function post_submit_meta_box( $post, $args = array() ) { |
---|
36 | <input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo esc_attr( ( 'auto-draft' == $post->post_status ) ? 'draft' : $post->post_status ); ?>" /> |
---|
37 | <label for="post_status" class="screen-reader-text"><?php _e( 'Set status' ); ?></label> |
---|
38 | <select name="post_status" id="post_status"> |
---|
39 | - <?php if ( 'publish' == $post->post_status ) : ?> |
---|
40 | + <?php |
---|
41 | + |
---|
42 | + // loop through the stati array to show it as <select> option |
---|
43 | + foreach ( $post_stati as $post_stati_key => $post_stati_args ) { |
---|
44 | + echo '<option' . selected( $post->post_status, $post_stati_key, false ) . ' value="' . $post_stati_key . '">' . $post_stati_args->label . '</option>'; |
---|
45 | + } |
---|
46 | + |
---|
47 | + if ( 'publish' == $post->post_status ) : ?> |
---|
48 | <option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e( 'Published' ); ?></option> |
---|
49 | <?php elseif ( 'private' == $post->post_status ) : ?> |
---|
50 | <option<?php selected( $post->post_status, 'private' ); ?> value='publish'><?php _e( 'Privately Published' ); ?></option> |
---|