$custom_field['name'] , 'value' => get_post_meta( $post->ID, '_' . $custom_field['unique_id'] , true ), 'helps' => $custom_field['help'] ); } return $form_fields; } add_filter( 'attachment_fields_to_edit', 'thisismyurl_add_custom_media_fields', null, 2 ); /** * Save our new media field * * @param object $post * @param object $attachment * * @return array */ function thisismyurl_save_custom_media_fields( $post, $attachment ) { $media_custom_fields = get_option( 'thisismyurl_custom_media_fields', NULL ); foreach ( $media_custom_fields as $custom_field ) { if ( ! empty( $attachment[ $custom_field['unique_id'] ] ) ) update_post_meta( $post['ID'], '_' . $custom_field['unique_id'] , $attachment[ $custom_field['unique_id'] ] ); else delete_post_meta( $post['ID'], '_' . $custom_field['unique_id'] ); } return $post; } add_filter( 'attachment_fields_to_save', 'thisismyurl_save_custom_media_fields', null, 2 ); /** * Adds a settings link to the plugins menu */ function thisismyurl_add_custom_media_fields_plugin_page_menu( $links, $file ) { static $this_plugin; if( ! $this_plugin ) $this_plugin = plugin_basename( __FILE__ ); if( $file == $this_plugin ) { $links [] = '' . __( 'Settings', 'thisismyurl_add_custom_media_fields' ) . ''; } return $links; } add_filter( 'plugin_action_links', 'thisismyurl_add_custom_media_fields_plugin_page_menu', 10, 2 ); /** * * Initialize the plugin * */ function thisismyurl_add_custom_media_fields_init( ) { register_setting( 'thisismyurl_add_custom_media_fields_options', 'thisismyurl_add_custom_media_fields', 'thisismyurl_add_custom_media_fields_validate' ); } add_action( 'admin_init', 'thisismyurl_add_custom_media_fields_init' ); /** * * Add the option page * */ function thisismyurl_add_custom_media_fields_add_page( ) { add_options_page( __( 'Add Custom Fields to Media Upload', 'thisismyurl_add_custom_media_fields' ), __( 'Add Custom Fields to Media Upload', 'thisismyurl_add_custom_media_fields' ), 'manage_options', 'thisismyurl_add_custom_media_fields', 'thisismyurl_add_custom_media_fields_do_page' ); } add_action( 'admin_menu', 'thisismyurl_add_custom_media_fields_add_page' ); /** * * Options page for WP Add Custom Fields to Media Upload * */ function thisismyurl_add_custom_media_fields_do_page( ) { $media_custom_fields = get_option( 'thisismyurl_custom_media_fields', NULL ); /* save changes to the custom media fields */ if ( isset( $_POST['unique_id'] ) ) { $media_custom_fields[] = array( 'unique_id' => esc_attr( $_POST['unique_id'] ), 'name' => esc_attr( $_POST['field_title'] ), 'help' => esc_attr( $_POST['field_help'] ), ); update_option( 'thisismyurl_custom_media_fields', $media_custom_fields); } /* delete changes to the custom media fields */ if ( ( $_GET['delete'] ) ) { foreach ( $media_custom_fields as $check_for_delete ) { if ( $check_for_delete['unique_id'] != urldecode( $_GET['delete'] ) ) { $new_custom_fields[] = array( 'unique_id' => esc_attr( $check_for_delete['unique_id'] ), 'name' => esc_attr( $check_for_delete['name'] ), 'help' => esc_attr( $check_for_delete['help'] ), ); } } update_option( 'thisismyurl_custom_media_fields', $new_custom_fields); } $media_custom_fields = get_option( 'thisismyurl_custom_media_fields', NULL ); ?>