Manchmal kann es erwünscht sein, mehr Infor­ma­tionen zu einer Medien­datei zu hinter­legen, die in WordPress hochge­laden wird. Dies könnte bei einem Foto z.B. der Fotograf sein. Bei einem eBook der Autor. Bei einem Film das Genre usw.

Der Code dafür kommt idealer­weise in ein eigenes Plugin. Natürlich könnte man diesen auch in die functions.php des Themes einfügen, dann wären die Infor­ma­tionen mit einem Wechsel des Themes aber weg und das wäre schlecht.

//Benutzerdefinierte Felder für Medienupload
function mo_medienupload_fields( $form_fields, $post ) {
	$form_fields['mo-medienupload-owner'] = array(
		'label' => 'Ersteller',
		'input' => 'text',
		'value' => get_post_meta( $post->ID, 'mo_medienupload_owner', true ),
		'helps' => 'Der Ersteller des Bildes',
	);
	$form_fields['mo-medienupload-program'] = array(
		'label' => 'Programm',
		'input' => 'text',
		'value' => get_post_meta( $post->ID, 'mo_medienupload_program', true ),
		'helps' => 'Das Programm welches zum Erstellen des Bildes benutzt wurde.',
	);
	return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'mo_medienupload_fields', 10, 2 );

//Verfügbar machen der Felder im Medienuploader
function mo_medienupload_fields_backend( $post, $attachment ) {
	if( isset( $attachment['mo-medienupload-owner'] ) )
		update_post_meta( $post['ID'], 'mo_medienupload_owner', $attachment['mo-medienupload-owner'] );
	if( isset( $attachment['mo-medienupload-program'] ) )
        update_post_meta( $post['ID'], 'mo_medienupload_program', esc_url( $attachment['mo-medienupload-program'] ) );
	return $post;
}
add_filter( 'attachment_fields_to_save', 'mo_medienupload_fields_backend', 10, 2 );

Um die Felder innerhalb des Loops auszu­geben kann folgendes Snippet verwendet werden.

echo get_post_meta($post->ID, 'mo-medienupload-owner', true);