WordPress как на ладони
wordpress jino

wp_get_attachment_link() WP 2.5.0

Получает html код ссылки на вложение (прикрепленный к посту файл) или страницу, содержащую вложения.

Ссылка будет показана, если страница содержит:

  1. Прикрепленную к посту картинку указанного размера (в параметрах);
  2. Медиа-иконку указанного размера, символизирующую вложенный файл;
  3. Заголовок вложения;
  4. Любой другой указанный заголовок.
Используется в: the_attachment_link().
Работает на основе: get_attachment_link()
Хуки из функции:
Возвращает

html код ссылки или сообщение "Missing Attachment", если не удалось получить вложение.

Использование

wp_get_attachment_link( $id, $size, $permalink, $icon, $text );
$id(число/WP_Post)
ID или объект вложения, ссылку на которое нужно получить.
По умолчанию: ID текущего вложения (внутри цикла вложений)
$size(строка/массив)

Размер изображения. Может быть:

  • Строкой — thumbnail, medium, large или full;

  • Массивом — массивом из двух значений означающих ширину и высоту картинки в пикселях (пр. array(32,32)). С версии 2.5. этот параметр не влияет на размер медиа иконок, которые всегда показываются в оригинальном размере.
    По умолчанию: 'thumbnail'
$permalink(логический)
false — Прямая ссылка на вложение. true — ссылка на вложение в структуре сайта (как прикрепленный файл к посту).
По умолчанию: false
$icon(логический)
Использовать медиа иконку, для отображения вложения — true. Не использовать иконку — false - по умолчанию.
По умолчанию: false
$text(строка)
Текст ссылки, который будет вести на вложение. По умолчанию этим текстом становится название вложения.
По умолчанию: null

Примеры

#1. Покажем вложение среднего размера

По умолчанию размер картинок в WordPress - это "thumbnail", "medium", "large" или "full" (картинки которые загружаются). Конкретные размеры выставляются в настройках WordPress настройки > медиа.

<?php
	$id = 9; // ID вложения
	echo wp_get_attachment_link($id, 'medium');
 ?>

#2. Этот пример выведет ссылку на вложение, в структуре WordPress:

$id = 9;
echo wp_get_attachment_link( $id, 'thumbnail', true );
// Получим: http://site.ru/путь_к_посту/название_поста/название_вложения.

#3. Выставим свой текст ссылки:

$id = 9;
echo wp_get_attachment_link( $id, '' , false, false, 'my link text');

#4. Ссылка с текстом заголовка поста, которая будет вести на файл вложения.

$id = 9;
echo wp_get_attachment_link($id, '' , false, false, ' ');

#5. WordPress может использовать иконки, представляющие прикрепленный файл (вложение).

Для картинок показываются миниатюры, для других файлов показываются картинки, соответствующие типу файла (например audio.jpg, который находится в папке: wp-includes/images/crystal/)

Следующий пример покажет вам, как можно изменить каталог откуда WordPress будет получать такие иконки, например изменим его на: wp-content/themes/yourtheme/images. Создайте каталог и скопируйте туда картинки-иконки и чтобы изменить путь до каталога в WordPress скопируйте этот код в файл темы functions.php:

add_filter('icon_dir', 'my_theme_icon_dyrectory');
function my_theme_icon_dyrectory($icon_dir) {
   return TEMPLATEPATH . '/images';
}

add_filter('icon_dir_uri', 'my_theme_icon_uri');
function my_theme_icon_uri($icon_dir) {
   return get_bloginfo('stylesheet_directory').'/images';
}

Код wp get attachment link: wp-includes/post-template.php WP 4.8.2

<?php
function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = false, $icon = false, $text = false, $attr = '' ) {
	$_post = get_post( $id );

	if ( empty( $_post ) || ( 'attachment' !== $_post->post_type ) || ! $url = wp_get_attachment_url( $_post->ID ) ) {
		return __( 'Missing Attachment' );
	}

	if ( $permalink ) {
		$url = get_attachment_link( $_post->ID );
	}

	if ( $text ) {
		$link_text = $text;
	} elseif ( $size && 'none' != $size ) {
		$link_text = wp_get_attachment_image( $_post->ID, $size, $icon, $attr );
	} else {
		$link_text = '';
	}

	if ( '' === trim( $link_text ) ) {
		$link_text = $_post->post_title;
	}

	if ( '' === trim( $link_text ) ) {
		$link_text = esc_html( pathinfo( get_attached_file( $_post->ID ), PATHINFO_FILENAME ) );
	}
	/**
	 * Filters a retrieved attachment page link.
	 *
	 * @since 2.7.0
	 *
	 * @param string       $link_html The page link HTML output.
	 * @param int          $id        Post ID.
	 * @param string|array $size      Size of the image. Image size or array of width and height values (in that order).
	 *                                Default 'thumbnail'.
	 * @param bool         $permalink Whether to add permalink to image. Default false.
	 * @param bool         $icon      Whether to include an icon. Default false.
	 * @param string|bool  $text      If string, will be link text. Default false.
	 */
	return apply_filters( 'wp_get_attachment_link', "<a href='" . esc_url( $url ) . "'>$link_text</a>", $id, $size, $permalink, $icon, $text );
}

Cвязанные функции

Из раздела: Вложения (media файлы)

wp_get_attachment_link 3 комментария
  • Dastan cайт: im1instrumental.net

    Помогите пожалуйста я не понимаю как делать вот такие attachment вложение сообщений
    смысле вот такие вот примеры
    http://www.hipstrumentals.com/?attachment_id=13752
    Ссылка этого сообщения
    http://www.hipstrumentals.com/2011/11/t-i-im-flexin-instrumental/
    а вот attachment вложение сообщений
    http://www.hipstrumentals.com/2011/11/t-i-im-flexin-instrumental/t-i-ft-big-krit-im-flexin-instrumental/
    вот я не понимаю как делать вот такие вложенные сообщений, кто понимает отпишитесь пожалуйста как сделать ?

    Ответить5.8 лет назад #
  • Alex cайт: www.google.kharkov.ua

    Спасибо тебе большое за "array(32,32)". Я час пытался решить проблему, а с помощью передачи спец размеров через массив сделал все за 2 минуты. Кстати, есть корректировка "означающий ширину и высоту" - означает "означающий максимальную ширину или высоту". wink

    Ответить5.6 лет назад #
    • Kama4464

      Рад, что в помогло!

      Почему максимальную то? Это же именно натуральная ширина и высота картинки будет, средствами CSS теоретически её можно сделать больше или меньше... Максимальная высота и ширина это свойства CSS max-width, max-height...

      Ответить5.6 лет назад #

Здравствуйте, !

Ваш комментарий