1 | <?php |
---|
2 | /* |
---|
3 | Plugin Name: 3.5 Media Bug |
---|
4 | Version: 0.1 |
---|
5 | Plugin URI: |
---|
6 | Description: |
---|
7 | Author: geminorum |
---|
8 | */ |
---|
9 | |
---|
10 | function gtheme_images_attachment_fields_to_edit( $fields, $post ){ |
---|
11 | if ( ! isset( $_REQUEST['post_id'] ) ) |
---|
12 | return $fields; |
---|
13 | |
---|
14 | $sizes = array( 'dashboard', 'single' ); |
---|
15 | $images = get_post_meta( $_REQUEST['post_id'], '_gtheme_images', true ); |
---|
16 | if ( ! is_array( $images ) ) |
---|
17 | $images = array(); |
---|
18 | |
---|
19 | $html = '<div>'; |
---|
20 | foreach( $sizes as $size ) { |
---|
21 | if ( isset( $images[$size] ) && $images[$size] == $post->ID ) |
---|
22 | $checked = ' checked="checked"'; |
---|
23 | else |
---|
24 | $checked = ''; |
---|
25 | |
---|
26 | $html .= '<label>'.$size.' <input type="checkbox" value="'.$size |
---|
27 | .'" id="gtheme-size-'.$post->ID.'-'.$size |
---|
28 | .'" name="gtheme-size-'.$post->ID.'-'.$size |
---|
29 | .'" '.$checked.' ></label>'; |
---|
30 | } |
---|
31 | $html .= '</div>'; |
---|
32 | |
---|
33 | return array_merge( $fields, array( 'all_tags' => array ( |
---|
34 | 'label' => __( 'Extra Tags', 'gtheme' ), |
---|
35 | 'input' => 'html', |
---|
36 | 'html' => $html ) ) ); |
---|
37 | } |
---|
38 | |
---|
39 | function gtheme_images_attachment_fields_to_save( $post, $attachment ) { |
---|
40 | if ( ! isset( $_REQUEST['post_id'] ) ) |
---|
41 | return $post; |
---|
42 | |
---|
43 | $sizes = array( 'dashboard', 'single' ); |
---|
44 | $images = $striped = array(); |
---|
45 | $saved_images = get_post_meta( $_REQUEST['post_id'], '_gtheme_images', true ); |
---|
46 | if ( ! is_array( $saved_images ) ) |
---|
47 | $saved_images = array(); |
---|
48 | |
---|
49 | foreach( $sizes as $size ) |
---|
50 | if ( isset( $_POST['gtheme-size-'.$post['ID'].'-'.$size] ) ) |
---|
51 | $images[$size] = $post['ID']; |
---|
52 | |
---|
53 | foreach( $saved_images as $saved_size => $saved_id ) |
---|
54 | if ( $post['ID'] != $saved_id ) |
---|
55 | $striped[$saved_size] = $saved_id; |
---|
56 | |
---|
57 | $final = array_merge( $striped, $images ); |
---|
58 | |
---|
59 | if ( count( $final ) ) |
---|
60 | update_post_meta( $_REQUEST['post_id'], '_gtheme_images', $final ); |
---|
61 | else |
---|
62 | delete_post_meta( $_REQUEST['post_id'], '_gtheme_images' ); |
---|
63 | |
---|
64 | return $post; |
---|
65 | } |
---|
66 | |
---|
67 | add_filter( 'attachment_fields_to_edit', 'gtheme_images_attachment_fields_to_edit', 10, 2 ); |
---|
68 | add_filter( 'attachment_fields_to_save', 'gtheme_images_attachment_fields_to_save', 10 ,2 ); |
---|