What is attachment id in wordpress

Developer Resources




WordPress enables theme developers to customize the look, feel, and functionality of the platform’s core media capabilities.


In WordPress you can upload, store, and display a variety of media such as image, video and audio files. Media can be uploaded via the Media > Add New in the Administration Screen, or Add Media button on the Post/Page Editor.

If a media file is uploaded within the edit screen, it will be automatically attached to the current post being created or edited. If it is uploaded via the Media’s Add New Screen or the Media Library Screen, it will be unattached, but may become attached to a post when it is inserted into a post later on.

Retrieving attachment ID or image ID

To retrieve the attachment ID, use get_posts() or get_children() function. This example retrieves the all attachments of the current post and getting all metadata of attachment by specifying the ID.

If you want to retrieve images from the post ID only, specify post_mime_type as image.


Special considerations

Compatible media formats

In the Media Library, you can upload any file (with the network administrator’s unfiltered_upload) and not just images or videos but text files, office documents or even binary files. Single site administrators do not have the unfiltered_upload capability by default and requires that definition to be set for the capability to kick in. Audio and Video files are processed by the internal library MediaElement.js .


Cannot retrieve attachment

When you cannot get your attached media by get_posts() or get_children() function, confirm your media is really attached to the post.
From the Administration Screen, Click Media > Library to open the Media Library and confirm the value in “Uploaded to” column of the media.


Get Attachment ID from a WordPress Image URL

Taking a WordPress image URL and using it to get the attachment ID is a bit tricky. There are a lot of code samples out there that do this, but they all have problems to some degree or another.

Pippin Williamson posted a very elegant solution based on comparing the URL to the guid in the WordPress database, but that doesn’t really work if the guid gets out of sync or if the URL you have is for a cropped image.

Читайте также:  Brother hl 5100dn драйвер linux

Phillip Newcomer realized that relying on the guid wasn’t the best route and that there should be a way to get the attachment ID even when you have a cropped image URL. So, he wrote some code that strips off the image dimensions that WordPress adds to the end of the file names and then checks the resulting filename against the _wp_attached_file meta key in the database. This works well, most of the time. However, the filename after stripping off the image dimensions doesn’t always match the value of _wp_attached_file , so in those cases it fails.

If we look to WordPress StackExchange, we’ll find code written by Andrey Savchenko (a.k.a. “Rarst”) that predates both of the solutions above and actually overcomes all the issues which were previously mentioned. In fact, my solution is largely inspired by the code he wrote. The only issue with the solution he provided is that there are potentially two queries performed to find a single attachment ID.

My solution was to use the robust and sound logic that Rarst used, but to do the same work using only a single query:

So, the next time you are Googling for a code solution, don’t just use the first code sample you find… even if it works for you. Find some alternate solutions. Read the code and think about use cases where it might break. Most importantly, learn what the code does and don’t just copy and paste. We don’t need to perpetuate bad solutions out of convenience.

I’d like to challenge you to always find one thing you can improve when you decide to use a code snippet. In fact, start with mine… how would you improve it?


attachment_url_to_postid() │ WP 4.0.0

Пытается получить ID вложения (картинки из медиатеки) по указанному URL вложения.

Чтобы получить ID записи/страницы, а не вложения, используйте аналогичную функцию url_to_postid().

Хуки из функции


int . ID записи (вложения) или 0, если не удалось найти прикрепленный файл.


URL вложения из которого нужно получить ID.

Нужно передавать URL на оригинальную картинку. URL на миниатюру работать не будет. Т.е. http://example.com/wp-content/uploads/2016/11/pic.jpg сработает, а http://example.com/wp-content/uploads/2016/11/pic-300×189.jpg нет.


#1 Демонстрация работы

Тут в одном примере показаны все варианты и то что функция вернет. В последнем примере показано как получить ID вложения если передается ссылка на миниатюру: там регулярной вырезается размер миниатюры

#2 Своя функция для получения ID вложения через URL

Добавить свой пример


  • Global. wpdb. $wpdb WordPress database abstraction object.

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

Код attachment_url_to_postid() attachment url to postid WP 6.1

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

URL (УРЛ Ссылка)

Редко используемые

Добрый день. А как можно изменить функцию, что бы она возвращала два параметра (через массив) = id картинки и id поста, где она есть. За один поиск в базе.

Читайте также:  Connect ssh with pem

Как это делает WP в своей медиатеке, при показе картинки показывает ссылку на пост, к которому она прикреплена.

Не удержался, дописал комментарий

Там собственно костыль на костыле.

Картинка хранится в двух таблицах базы — в таблице posts и таблице postmeta .

Итого — что бы гарантировано найти картинку по url (и относительно быстро), нужно в админский бубен несколько раз бить:

сначала через регулярку очистить название файла от размеров ( -80×80 -150×150 и проч.)

через встроенную функцию WP attachment_url_to_postid() — ищет в postmeta
(быстро, т.к. таблица postmeta меньше posts — но может не найти, если файл был загружен через FTP и потом через плагин был криво синхронизирован с базой)

через предложенную функцию get_img_id_for_Yarik — ищет в posts
(быстро, т.к. ищет по индексируемому полю post_name, где указывается название файла без расширения — но может не найти, тк пользователь имеет возможность поменять это поле вручную для картинки)

  • совсем медленно — через поле guid в той же таблице posts через запрос к базе, там точно будет название загруженного файла
  • Можно сразу искать через п.3 гарантировано — но если это ищется в каком-либо цикле — будет совсем медленно.

    не знаю, как организован поиск в WP в медиатеке — но факт тот, что по итогам поиска WP целостность своих баз восстаналивает — картинка появляется в обоих базах


    wp_get_attachment_metadata() │ WP 2.1.0

    Получает метаданные прикрепленного файла (вложения).

    Хуки из функции


    Массив|false . Массив метаданных указанного прикрепленного файла. Если данные получить не удалось, то будет возвращено false.



    #1 Получим метаданные вложения 656 (картинка):

    В результате переменная $array будет содержать примерно следующие данные (зависит от типа вложения):

    Выведем разрешения картинки:

    #2 Получим метаданные вложения 95 (видео):

    В результате переменная $array будет содержать примерно следующие данные (зависит от типа вложения):

    Добавить свой пример

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

    С версии 2.1.0 Введена.
    С версии 6.0.0 The $filesize value was added to the returned array.

    Код wp_get_attachment_metadata() wp get attachment metadata WP 6.1

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

    Метаданные (postmeta)

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

    Добрый день! Спрошу здесь — не нашла подходящей темы. Можно как-то получить атрибут alt картинки для ее дальнейшего использования? Ну например, вывести его в качестве подписи к изображению и т.д.

    Лариса, обрисуйте более четко задачу. Где будет выводиться картинка? В цикле или нет? Нужно максимально больше инфы дать.

    Пока ждала ответ, разобралась сама. Но возник теперь такой вопрос: как в цикле вложения получить и вывести описание картинки-вложения? А самой странице вложения сделать вот такой тайтл: тайтл картинки | тайтл страницы на которой размещен?

    Добрый день!
    Подскажите пожалуйста, как получить продолжительность прикреплённого к посту аудиофайла в переменную?

    Данную функцию можно использовать для увиличения превью изображения по клику, в связке с фансибокс.

    Читайте также:  Cert у expired 0x800b0101

    может пригодиться кому.

    вот интересно когда картинку загружаешь то к ней можно прописать кучу опций
    и alt и подпись и описание и заголовок
    но как это все вывести ни где не сказано и тут найти не могу
    вывести можно только alt и подпись а все остальное не выводится


    Developer Resources

    Retrieves attachment metadata for attachment ID.




    array|false Attachment metadata. False on failure.

      width int



    Filters the attachment meta data.


    Calls the callback functions that have been added to a filter hook.

    Retrieves a post meta field for the given post ID.

    Retrieves post data given a post ID or post object.

    Used By

    Uses Description
    apply_filters() wp-includes/plugin.php
    Used By

    Applies edits to a media item and creates a new attachment record.

    Adds width and height attributes to an img HTML tag.

    Adds srcset and sizes attributes to an existing img HTML tag.

    Retrieves the path to an uploaded image file.

    Retrieves the URL to an original attachment image.

    Compare the existing image sub-sizes (as saved in the attachment meta) to the currently registered image sub-sizes, and return the difference.

    If any of the currently registered image sub-sizes are missing, create them and update the image meta data.

    Render the media on the frontend.

    Imports theme starter content into the customized state.

    Prepares a single attachment output for response.

    Retrieves the value for an image attachment’s ‘srcset’ attribute.

    Retrieves the value for an image attachment’s ‘sizes’ attribute.

    Creates a ‘sizes’ attribute value for an image.

    Restores the metadata for a given attachment.

    Saves image to post, along with enqueued changes in $_REQUEST[‘history’] .

    Loads the WP image-editing interface.

    Displays the image and editor in the post editor

    Displays non-editable attachment metadata in the publish meta box.

    Retrieves HTML form for modifying the image attachment.

    Updates an existing post with values provided in $_POST .

    Ajax handler for updating attachment attributes.

    Displays fields for ID3 data.

    Display second step of custom header image page.

    Gets the header images uploaded for the active theme.

    Wraps attachment in paragraph tag before content.

    Maybe attempts to generate attachment metadata, if missing.

    Prepares an attachment post object for JS, where it is expected to be JSON-encoded and fit into an Attachment model.

    Builds the Gallery shortcode output.

    Builds the Playlist shortcode output.

    Retrieves the image’s intermediate size (resized) path, width, and height.

    Gets an HTML img element representing an image attachment.

    Scales an image to fit a particular size (such as ‘thumb’ or ‘medium’).

    Trashes or deletes an attachment.

    Retrieves thumbnail for an attachment.

    Prepares media item data for return in an XML-RPC object.


    Поделиться с друзьями
    Used By Description
    WP_REST_Attachments_Controller::edit_media_item() wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php
    WP_Widget_Media_Image::render_media() wp-includes/widgets/class-wp-widget-media-image.php
    WP_Customize_Manager::import_theme_starter_content() wp-includes/class-wp-customize-manager.php
    WP_REST_Attachments_Controller::prepare_item_for_response() wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php
    Custom_Image_Header::step_2() wp-admin/includes/class-custom-image-header.php
    wp_xmlrpc_server::_prepare_media_item() wp-includes/class-wp-xmlrpc-server.php