Bird
Raised Fist0
Wordpressframework~5 mins

Media library management in Wordpress

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

Media library management helps you organize and use images, videos, and files easily on your WordPress site.

When you want to add pictures to your blog posts or pages.
When you need to organize your uploaded files for easy access.
When you want to edit or delete media files from your website.
When you want to reuse media files across different posts or pages.
When you want to improve website speed by managing media sizes.
Syntax
Wordpress
wp.media({
  title: 'Select or Upload Media',
  button: { text: 'Use this media' },
  multiple: false
}).open();
This code opens the WordPress media uploader popup.
You can set 'multiple' to true to allow selecting many files.
Examples
Opens media library to select a single image.
Wordpress
wp.media({
  title: 'Choose an Image',
  button: { text: 'Select Image' },
  multiple: false
}).open();
Allows uploading or selecting multiple files at once.
Wordpress
wp.media({
  title: 'Upload Files',
  button: { text: 'Upload' },
  multiple: true
}).open();
Sample Program

This example shows how to add a button in WordPress admin that opens the media library. When you select an image, its URL appears in a text box and the image preview shows below.

Wordpress
<?php
// Enqueue media scripts in WordPress theme or plugin
function enqueue_media_scripts() {
  wp_enqueue_media();
  wp_enqueue_script('media-library-script', get_template_directory_uri() . '/js/media-library.js', array('jquery'), null, true);
}
add_action('admin_enqueue_scripts', 'enqueue_media_scripts');

// media-library.js
jQuery(document).ready(function($) {
  $('#upload-button').on('click', function(e) {
    e.preventDefault();
    var mediaUploader = wp.media({
      title: 'Choose Image',
      button: { text: 'Select Image' },
      multiple: false
    });
    mediaUploader.on('select', function() {
      var attachment = mediaUploader.state().get('selection').first().toJSON();
      $('#image-url').val(attachment.url);
      $('#image-preview').attr('src', attachment.url).show();
    });
    mediaUploader.open();
  });
});

// HTML part inside admin page
<button id="upload-button">Upload Image</button>
<input type="text" id="image-url" readonly />
<img id="image-preview" style="display:none; max-width: 300px; margin-top: 10px;" alt="Image preview" />
OutputSuccess
Important Notes

Always enqueue wp_enqueue_media() before using media library scripts.

Use mediaUploader.on('select', ...) to get the selected media details.

Media library works only in admin or properly enqueued frontend scripts.

Summary

Media library management helps organize and reuse media files easily.

Use wp.media() JavaScript API to open media uploader popup.

Remember to enqueue media scripts with wp_enqueue_media() before using.

Practice

(1/5)
1. What is the main purpose of the WordPress Media Library?
easy
A. To organize and manage media files like images and videos
B. To write and edit PHP code
C. To create new WordPress themes
D. To manage user roles and permissions

Solution

  1. Step 1: Understand the Media Library role

    The Media Library is designed to store and organize media files such as images, audio, and videos.
  2. Step 2: Compare with other options

    Options A, B, and D relate to themes, coding, and user management, which are not the Media Library's purpose.
  3. Final Answer:

    To organize and manage media files like images and videos -> Option A
  4. Quick Check:

    Media Library = Manage media files [OK]
Hint: Media Library is for media files, not code or users [OK]
Common Mistakes:
  • Confusing Media Library with theme or user management
  • Thinking it edits code
  • Assuming it manages plugins
2. Which WordPress function must be called before using wp.media() in JavaScript to open the media uploader?
easy
A. wp_enqueue_script('jquery')
B. wp_enqueue_media()
C. wp_register_style()
D. wp_localize_script()

Solution

  1. Step 1: Identify the function to load media scripts

    The function wp_enqueue_media() loads all necessary scripts and styles for the media uploader.
  2. Step 2: Check other options

    Options B, C, and D relate to scripts or styles but do not specifically load media uploader scripts.
  3. Final Answer:

    wp_enqueue_media() -> Option B
  4. Quick Check:

    Load media scripts = wp_enqueue_media() [OK]
Hint: Always enqueue media scripts with wp_enqueue_media() first [OK]
Common Mistakes:
  • Forgetting to enqueue media scripts before using wp.media()
  • Using unrelated enqueue functions
  • Confusing script and style enqueue functions
3. What will the following JavaScript code do in a WordPress admin page?
const frame = wp.media({ title: 'Select Image', multiple: false });
frame.open();
medium
A. Throw a JavaScript error because wp.media() is undefined
B. Upload a new image automatically without user interaction
C. Close any open media uploader popup
D. Open the WordPress media uploader popup allowing single image selection

Solution

  1. Step 1: Understand wp.media() usage

    The code creates a media frame with a title and disables multiple selection, then opens the media uploader popup.
  2. Step 2: Analyze each option

    Open the WordPress media uploader popup allowing single image selection matches the behavior. Upload a new image automatically without user interaction is wrong because it does not upload automatically. Close any open media uploader popup is incorrect as it opens, not closes. Throw a JavaScript error because wp.media() is undefined would happen only if scripts are not loaded.
  3. Final Answer:

    Open the WordPress media uploader popup allowing single image selection -> Option D
  4. Quick Check:

    wp.media() + open() = open media popup [OK]
Hint: wp.media() with open() shows media popup [OK]
Common Mistakes:
  • Assuming it uploads files automatically
  • Confusing open() with close()
  • Not enqueuing media scripts causing errors
4. You wrote this code to open the media uploader but it does not open:
jQuery(document).ready(function($) {
  const frame = wp.media({ title: 'Choose File' });
  frame.open();
});

What is the most likely reason?
medium
A. The media uploader cannot be opened inside document.ready
B. The frame.open() method is incorrect
C. You forgot to call wp_enqueue_media() to load media scripts
D. jQuery is not loaded on the page

Solution

  1. Step 1: Check media scripts loading

    The media uploader requires wp_enqueue_media() to load scripts; without it, wp.media is undefined or non-functional.
  2. Step 2: Evaluate other options

    frame.open() is correct syntax. jQuery is likely loaded if using $ inside document.ready. The uploader can open inside document.ready.
  3. Final Answer:

    You forgot to call wp_enqueue_media() to load media scripts -> Option C
  4. Quick Check:

    Missing wp_enqueue_media() = no media popup [OK]
Hint: Always enqueue media scripts before using wp.media() [OK]
Common Mistakes:
  • Calling frame.open() incorrectly
  • Assuming jQuery absence causes this
  • Thinking document.ready blocks media popup
5. You want to let users select multiple images from the media library and then display their URLs in a list. Which code snippet correctly sets up the media frame for multiple selection?
hard
A. const frame = wp.media({ title: 'Select Images', multiple: true });
B. const frame = wp.media({ title: 'Select Images', multiple: 'multiple' });
C. const frame = wp.media({ title: 'Select Images', multiple: false });
D. const frame = wp.media({ title: 'Select Images', multiple: 1 });

Solution

  1. Step 1: Understand the 'multiple' option type

    The 'multiple' option expects a boolean true or false to allow multiple selection.
  2. Step 2: Check each option's correctness

    const frame = wp.media({ title: 'Select Images', multiple: true }); correctly uses multiple: true. const frame = wp.media({ title: 'Select Images', multiple: 'multiple' }); uses a string which is invalid. const frame = wp.media({ title: 'Select Images', multiple: false }); disables multiple selection. const frame = wp.media({ title: 'Select Images', multiple: 1 }); uses a number which is invalid.
  3. Final Answer:

    const frame = wp.media({ title: 'Select Images', multiple: true }); -> Option A
  4. Quick Check:

    multiple: true enables multi-select [OK]
Hint: Use boolean true for multiple selection in wp.media() [OK]
Common Mistakes:
  • Passing string or number instead of boolean for multiple
  • Setting multiple to false when multi-select needed
  • Confusing option names or types