WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_get_attachment_link()WP 2.5.0

Получает ссылку на файл вложения или WP страницу вложения. Возвращает <a> тег.

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

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

Возвращает

Строку.

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

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

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

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

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

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

Примеры

0

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

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

$id = 12144; // ID вложения
echo wp_get_attachment_link( $id, 'medium' );
/*
получим:
<a href='https://example.com/wp-content/uploads/2019/05/image.png'>
	<img width="803" height="803" src="https://example.com/wp-content/uploads/2019/05/image.png" class="attachment-medium size-medium" alt="" />
</a>
*/
0

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

$id = 12144;
echo wp_get_attachment_link( $id, 'thumbnail', true );
/*
Получим: 
<a href='http://example.com/название_поста/'>
	<img width="120" height="120" src="https://example.com/wp-content/uploads/2019/05/image.png" class="attachment-thumbnail size-thumbnail" alt="" />
</a>
*/
0

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

$id = 12144;
echo wp_get_attachment_link( $id, '' , false, false, 'my link text' );
// <a href='https://example.com/wp-content/uploads/2019/05/image.png'>my link text</a>
0

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

$id = 12144;
echo wp_get_attachment_link( $id, '' , false, false, ' ' );
// <a href='https://example.com/wp-content/uploads/2019/05/image.png'>Оптимизация</a>
0

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

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

Следующий пример покажет вам, как можно изменить каталог откуда 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';
}

Список изменений

С версии 2.5.0 Введена.
С версии 4.4.0 The $post parameter can now accept either a post ID or WP_Post object.

Код wp_get_attachment_link() WP 6.5.2

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

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

	$url = wp_get_attachment_url( $_post->ID );

	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 the list of attachment link attributes.
	 *
	 * @since 6.2.0
	 *
	 * @param array $attributes An array of attributes for the link markup,
	 *                          keyed on the attribute name.
	 * @param int   $id         Post ID.
	 */
	$attributes = apply_filters( 'wp_get_attachment_link_attributes', array( 'href' => $url ), $_post->ID );

	$link_attributes = '';
	foreach ( $attributes as $name => $value ) {
		$value            = 'href' === $name ? esc_url( $value ) : esc_attr( $value );
		$link_attributes .= ' ' . esc_attr( $name ) . "='" . $value . "'";
	}

	$link_html = "<a$link_attributes>$link_text</a>";

	/**
	 * Filters a retrieved attachment page link.
	 *
	 * @since 2.7.0
	 * @since 5.1.0 Added the `$attr` parameter.
	 *
	 * @param string       $link_html The page link HTML output.
	 * @param int|WP_Post  $post      Post ID or object. Can be 0 for the current global post.
	 * @param string|int[] $size      Requested image size. Can be any registered image size name, or
	 *                                an array of width and height values in pixels (in that order).
	 * @param bool         $permalink Whether to add permalink to image. Default false.
	 * @param bool         $icon      Whether to include an icon.
	 * @param string|false $text      If string, will be link text.
	 * @param array|string $attr      Array or string of attributes.
	 */
	return apply_filters( 'wp_get_attachment_link', $link_html, $post, $size, $permalink, $icon, $text, $attr );
}
4 комментария
    Войти