get_attachment_link() в WordPress: как получить ссылку на вложение.

## 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 ); ?>

    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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *