UPDATE
I did not test this method, but it is not very old. It adds custom meta information to the caption section of the image, which can then be styled as needed. Again, I did not try the method, and I am not a coder, but from reading through the tutorial, it sounds like it fits your needs.
Add Custom Meta Fields to Media Attachments in WordPress
Original Answer
I think this article from wpbeginner might be exactly what you need. I have used this exact method before.
How to Add Additional Fields to the WordPress Media Uploader
Related Posts:
- How do I change/modify the_post_thumbnail(); html output?
- the_post_thumbnail() based on the Post ID
- How can update custom meta for all posts
- How to make thumbnail image fit into a div where image dimentions are completely different?
- Randomly Assign an Image’s Alt Text Based on Data From Post
- Set the background to a default image if there isn’t a specified “featured image”
- height should be set to auto to avoid pixelation in the post thumbnail function
- Else/If Statement to Display Photo Descriptions
- Fallback image URL if no featured image exists via a shortcode function
- Unable to Call More than One Meta Box Output
- Hide a div when a custom field is empty
- Get the alt text of the image in a array
- How to check post meta isset or not empty during publish/save post?
- Add Featured Image to Existing Post
- How to add and subtract user meta values after post meta update
- not outputting medium size image URL
- Delete post meta by serialized meta value
- How to put 2 php codes in functions.php without site crashing
- How to link all featured images to custom url in single.php for only non-logged-in users?
- insert thumbnail image from php script
- Can’t put a hyperlink on Featured Post’s Image
- Postmeta not saving
- Overwriting a Shortcode
- get_post_meta no longer working
- How to display the date under the post title?
- add if statement to the featured image
- Remove default Image Sizes
- Add attribute to featured image with filter (wp_get_attachment_image_attributes)
- Generate and upload screenshot as featured image for user-submitted post
- How do I get a function to work in single.php
- Display fields as values in array from external SQL DB
- Only Show Link If div Exists
- The text box have space character
- How to put a variable in a instance in the widget
- Create another “Display Site Title and Tagline” checkbox, “Header Text Color” setting and control
- how to remove metadata from the posts of my blog?
- How can I create a list of page titles from custom meta values?
- Trying to establish connection to External Database
- Trying to remove post thumbnail with plugin
- Recent posts with featured image or fallback image with permalink
- add_action shortcut?
- Passing the custom field values in the wp_get_current_user array function
- Using fwrite() and “a” appends multiple times instead of once
- How to output a PHP file values by shortcode?
- Showing content from one page on another
- How to style options page in dashboard?
- How to insert a single row to WP database table?
- Get date numerical and separate?
- Where in PHP do I move title and meta (date) to bottom of each blog section?
- WP dynamic featured image – Can’t get second featured image url
- WSoD being caused by this piece of code
- Advanced Meta Query for Large Calendar Website (12k+ posts) (175k+ wp_postmeta rows)
- Converting HTML Template to WordPress Theme
- How to Arrange PHP Files to Allow for Multiple Types of Pages?
- Add a variable in functions.php and call it in single.php
- How to access global variable $menu inside a class function
- Calling directories to load in wordpress
- WordPress add post format support not working
- Can I prevent the user from adding more than two levels deep of terms inside of a taxonomy metabox?
- Image media upload metabox
- How to remove the cufon script from Dzonia Lite theme [closed]
- How to remove or change the “W” icon in “My Sites”?
- get a simple array of all of the term names that exist in all taxonomies
- Login/logout in header
- How to display posts by current user in a drop down
- Logged in user ID as post ID
- How does WordPress insert Paragraphs in posts
- WordPress Access allowed to fewer pages till user logs in
- Linking text within textarea of custom meta box
- Show css depending on activity type in BuddyPress activity-loop [closed]
- only show container with next/prev links if they exist?
- How to combine wordpress_logged_in cookies in one cookie?
- Populate dropdown with Child Pages based on Parent Page chosen
- How can I remove a function that has been added to wordpress with add_filter?
- Change the WP Video Shortcode Output
- Show categories then when clicked on a category list all sub category and when clicked show all posts in that sub category
- remove wp floating submenu in wp dashboard
- How to put “Read more” link in Custom Excerpt inside p tag?
- Two Different Links for Same Product – WooCommerce [closed]
- ACF: how do I get the fields and its values of a specific group?
- How to store data from multiple forms using ajax and php
- How to control WordPress image metadata (using Imagick)?
- How to add seperate classes to no-search-result and found-search-result pages on wordrpess search – is_search()
- Get value from shortcode to do something
- PHP 8, AJAX mail form to function.php doesn’t work
- How do I add custom bulk actions to multiple custom post types?
- PHP variable = get_the_post_thumbnail_url outputting without slashes
- Error when adding excerpt to the content through functions.php
- Automatically adding new post categories to menu
- Add data attribute to each li in menu
- Get post id in a function when edit/add a post
- Making BuddyPress Activity Stream (Post Type) Featured Images Clickable [closed]
- How to check if a meta value has already been assigned to any user?
- How to complete two other input fields, completed the first
- Prev/Next child navigation for current page modifications?
- Adding rel tag to all external links
- Is it possible to use Data URI image to set a post thumbnail?
- Sort custom meta column by other meta value
- How can I apply_filters from inside a function?
- function to assign user role based on a field from usermeta