如何將其他字段添加到WordPress Media Uploader


在進行一個項目時,我們創建了一個非常酷的畫廊,完全由WordPress附件和自定義帖子類型提供支持,我們發現需要向WordPress媒體上傳器添加其他字段。 這些附加字段使我們可以通過在每個圖像頁面上添加攝影師名稱及其URL來給每個攝影師一個榮譽。 WordPress將圖像存儲為附件中的帖子類型,因此添加元數據就像添加自定義字段。 由於WordPress附件沒有自定義字段UI,因此我們必須向媒體上傳器添加一個自定義字段,以便收集元數據。 在本文中,我們將向您展示如何向WordPress Media Uploader添加其他字段。

我們將使用以下過濾器進行更改: attachment_fields_to_editattachment_fields_to_save

對於這樣的項目,我們強烈建議您創建一個特定於站點的插件並添加以下代碼。 但是,您仍然可以在主題的functions.php文件中添加代碼以使其工作。

/**
 * 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 );
?>

上面的代碼將向媒體上載器添加兩個文本字段,分別稱為“攝影師名稱”和“攝影師URL”。 您可以在下面的屏幕截圖中看到:

媒體上傳器中的其他字段

代碼說明: 在第一個函數中,我們僅使用數組來指定字段的標籤,輸入類型,值和幫助文本。 第二項功能是檢查是否為這些字段設置了值。 如果設置了該值,則更新帖子元數據。

如果要顯示附件模板中的字段,則只需將以下代碼粘貼到循環中:

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

如果要在存檔模板或任何其他模板中顯示特色圖像的字段,則只需使用:

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

我們希望您喜歡這篇文章。 對於那些不知道如何創建附件模板的人,請不要擔心。 在下一篇文章中,我們將介紹如何在WordPress中創建附件的模板。

給Bill Erickson的帽子技巧,向我們展示瞭如何執行此操作。