SÄ hÀr lÀgger du till ytterligare fÀlt till WordPress Media Uploader

SÄ hÀr lÀgger du till ytterligare fÀlt till WordPress Media Uploader

NÀr vi arbetade med ett projekt dÀr vi skapade ett vÀldigt coolt galleri som drivs helt av WordPress-bilagor och en anpassad inlÀggstyp, fann vi ett behov av att lÀgga till fler fÀlt till WordPress-medieuppladdaren. Dessa ytterligare fÀlt gjorde det möjligt för oss att ge varje fotograf kredit genom att lÀgga till fotografens namn och deras URL pÄ varje bildsida. WordPress lagrar bilder som inlÀgg i bifogad posttyp, sÄ att lÀgga till metadata Àr precis som att lÀgga till anpassade fÀlt. Eftersom WordPress-bilagorna inte har ett anvÀndargrÀnssnitt för anpassade fÀlt mÄste vi lÀgga till anpassade fÀlt till medieuppladdaren för att samla in metadata. I den hÀr artikeln visar vi dig hur du lÀgger till ytterligare fÀlt i WordPress Media Uploader.

Vi kommer att anvÀnda följande filter för att göra Àndringen: och

För ett projekt som detta rekommenderar vi starkt att du skapar ett platsspecifikt plugin och lÀgger till följande kod. Du kan dock fortfarande lÀgga till koder i ditt temas funktioner.php-fil för att fÄ det att fungera.


/**
 * Add Photographer Name and URL fields to media uploader
 *
 * @param $form_fields array, fields to include in attachment form
 * @param $post object, attachment record in database
 * @return $form_fields, modified form fields
 */
 
function be_attachment_field_credit( $form_fields, $post ) {
	$form_fields['be-photographer-name'] = array(
		'label' => 'Photographer Name',
		'input' => 'text',
		'value' => get_post_meta( $post->ID, 'be_photographer_name', true ),
		'helps' => 'If provided, photo credit will be displayed',
	);

	$form_fields['be-photographer-url'] = array(
		'label' => 'Photographer URL',
		'input' => 'text',
		'value' => get_post_meta( $post->ID, 'be_photographer_url', true ),
		'helps' => 'Add Photographer URL',
	);

	return $form_fields;
}

add_filter( 'attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 );

/**
 * Save values of Photographer Name and URL in media uploader
 *
 * @param $post array, the post data for database
 * @param $attachment array, attachment fields from $_POST form
 * @return $post array, modified post data
 */

function be_attachment_field_credit_save( $post, $attachment ) {
	if( isset( $attachment['be-photographer-name'] ) )
		update_post_meta( $post['ID'], 'be_photographer_name', $attachment['be-photographer-name'] );

	if( isset( $attachment['be-photographer-url'] ) )
update_post_meta( $post['ID'], 'be_photographer_url', esc_url( $attachment['be-photographer-url'] ) );

	return $post;
}

add_filter( 'attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 );
?>

Koden ovan kommer att lÀgga till tvÄ textfÀlt i Media Uploader som heter Photographer Name och Photographer URL. Du kan se det pÄ skÀrmdumpen nedan:

Förklaring av koden: I den första funktionen anvÀnder vi helt enkelt en matris för att ange fÀltets etikett, inmatningstyp, vÀrde och hjÀlptext. Den andra funktionen kontrollerar om ett vÀrde har stÀllts in för dessa fÀlt. Om vÀrdet Àr instÀllt uppdateras postmetadata.

Om du vill visa fÀlten i din bilagmall klistrar du bara in följande koder i slingan:

echo get_post_meta($post->ID, 'be_photographer_url', true);

Om du vill visa fÀlten för din utvalda bild i din arkivmall eller nÄgon annan mall, anvÀnd bara:

echo get_post_meta(get_post_thumbnail_id(), 'be_photographer_url', true);

Vi hoppas att du gillade den hÀr artikeln. Oroa dig inte för de som inte vet hur man skapar en mall för en bilaga. I nÀsta artikel kommer vi att beskriva hur man skapar en mall för en bilaga i WordPress.

Hatttips till Bill Erickson för att han visade oss hur man gör detta.