В процессе работы над проектом мы как-то решили создать красивую галерею, полностью построенную на вложениях для WordPress и настраиваемом типе публикаций на сайте, для чего нам понадобилось ввести дополнительные поля в загрузчик медиа-файлов для WordPress-сайта. Данные дополнительные поля позволили нам указать имя и данные каждого фотографа, чьи снимки были использованы, а также URL сайта фотографа на странице с изображениями. В WordPress изображения хранятся как посты, описанные во вложениях сайта, поэтому добавление мета-данных имеет такой же характер, как добавление настраиваемых полей.

Поскольку вложения WordPress не имеют собственного интерфейса для настраиваемых полей, нам пришлось добавить эти поля в медиа-загрузчик так, чтобы они собирали мета-данные. В данной публикации я покажу вам, как именно добавить дополнительные поля в загрузчик WordPress Media Uploader.

Для этой цели мы будем применять следующие фильтры: attachment_fields_to_edit и attachment_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 );
?>

Приведенный выше код добавит 2 текстовых поля к вашему медиа-загрузчику, поля эти будут называться Photographer Name и Photographer URL. Как будут выглядеть эти поля, вы можете увидеть на рисунке ниже:

Разъяснение по коду:

  • В первой функции мы просто используем массив для конкретизации ярлыка для поля, типа ввода, значения и текста-подсказки.
  • Вторая функция проверяет, заданы ли правильные значения для всех полей. Если значение заданы правильно и они проверены, то загружаются мета-данные вашего поста.

Если вы хотите отображать поля для шаблона ваших загружаемых файлов, тогда просто вставьте следующие фрагменты кода внутри цикла:

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

Если вы хотите отображать значения полей для поддерживаемых изображений в архивном шаблоне или в любом другом шаблоне, тогда просто используйте такой код:

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

На этом все. Надеемся, что этот небольшой урок вам пригодится.

Источник: WPBeginner

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

5 комментариев

сначала новые
по рейтингу сначала новые по хронологии

А как сделать дополнительное поле в загрузчике, если мне надо добавлять к картинкам дополнительные параметры, например: *rel="shadowbox;height=480;width=640"*, чтобы это отображалось следующим образом:

В данном уроке описано как добавлять только мета-данные к изображению. А вы хотите добавить параметры стиля отображения.

порезал код ваш плагин добавления комментариев