## get_attachment_link() │ WP 2.0.0
Функция get_attachment_link() используется для получения постоянной ссылки на вложение. Это может быть полезно как в цикле WordPress, так и вне его.
### Используется в
- wp_get_attachment_link()
- get_permalink()
### Хуки функции
- attachment_link
### Возвращаемое значение
Строка с постоянной ссылкой на вложение.
### Использование
```php
get_attachment_link( $post, $leavename );
- $post (int|WP_Post) — ID поста или объект поста. По умолчанию используется глобальный
$post. - $leavename (true|false) — Нужно ли сохранять имя страницы. По умолчанию: false.
Примеры
Пример 1: Получение URL страницы вложения
Если файл не прикреплён к посту:
echo get_attachment_link( 104 ); // Вывод: http://example.com/screenshot_4-3
Если файл прикреплён к посту:
echo get_attachment_link( 105 ); // Вывод: http://example.com/conditional-fields/vkladka-s-nastrojkoj
Пример 2: Отображение ссылки на вложение
Поскольку функция возвращает URL, а не вывод, мы используем команду echo для отображения ссылки:
Пример 3: Отображение прикреплённых изображений и их названий в виде списка
Чтобы отобразить изображения, прикреплённые к определённой странице в виде списка, можно использовать следующий код:
'attachment',
'numberposts' => -1,
'post_status' => null,
'post_parent' => $post->ID
);
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
?>
-
ID, true ); ?>
= apply_filters( 'the_title', $attachment->post_title ); ?>
Примечания
- Глобальная переменная: WP_Rewrite.
$wp_rewrite— это компонент для обработки перезаписей URL в WordPress.
Изменения
Функция была представлена в версии 2.0.0.
Код функции get_attachment_link() WP 6.7.2
function get_attachment_link( $post = null, $leavename = false ) {
global $wp_rewrite;
$link = false;
$post = get_post( $post );
$force_plain_link = wp_force_plain_post_permalink( $post );
$parent_id = $post->post_parent;
$parent = $parent_id ? get_post( $parent_id ) : false;
$parent_valid = true; // По умолчанию без родителя.
if (
$parent_id &&
(
$post->post_parent === $post->ID ||
! $parent ||
! is_post_type_viewable( get_post_type( $parent ) )
)
) {
$parent_valid = false;
}
if ( $force_plain_link || ! $parent_valid ) {
$link = false;
} elseif ( $wp_rewrite->using_permalinks() && $parent ) {
if ( 'page' === $parent->post_type ) {
$parentlink = _get_page_link( $post->post_parent );
} else {
$parentlink = get_permalink( $post->post_parent );
}
if ( is_numeric( $post->post_name ) || str_contains( get_option( 'permalink_structure' ), '%category%' ) ) {
$name = 'attachment/' . $post->post_name;
} else {
$name = $post->post_name;
}
if ( ! str_contains( $parentlink, '?' ) ) {
$link = user_trailingslashit( trailingslashit( $parentlink ) . '%postname%' );
}
if ( ! $leavename ) {
$link = str_replace( '%postname%', $name, $link );
}
} elseif ( $wp_rewrite->using_permalinks() && ! $leavename ) {
$link = home_url( user_trailingslashit( $post->post_name ) );
}
if ( ! $link ) {
$link = home_url( '/?attachment_id=' . $post->ID );
}
return apply_filters( 'attachment_link', $link, $post->ID );
}
Связанные функции
Постоянные ссылки (дружелюбные URL):
edit_bookmark_link()edit_comment_link()get_pagenum_link()get_permalink()get_sample_permalink()get_tag_link()get_term_link()get_the_permalink()the_permalink()wp_get_shortlink()
Вложения (медиа файлы):
get_attached_file()get_attached_media()get_children()get_post_mime_type()is_local_attachment()the_attachment_link()wp_attachment_is()wp_delete_attachment()wp_get_attachment_link()wp_get_attachment_url()wp_get_original_image_path()wp_get_original_image_url()wp_insert_attachment()
Миниатюры постов:
get_post_thumbnail_id()get_the_post_thumbnail()has_post_thumbnail()the_post_thumbnail()wp_get_attachment_image()wp_get_attachment_image_src()wp_get_attachment_image_url()