Bird
Raised Fist0
Wordpressframework~10 mins

Media library management in Wordpress - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to upload a file to the WordPress media library.

Wordpress
<?php
$attachment_id = media_handle_upload('[1]', 0);
?>
Drag options to blanks, or click blank then click option'
Amedia
Bupload
Cimage
Dfile
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'upload' or 'media' instead of the actual file input name.
Leaving the parameter empty.
2fill in blank
medium

Complete the code to get the URL of an attachment by its ID.

Wordpress
<?php
$url = wp_get_attachment_url([1]);
?>
Drag options to blanks, or click blank then click option'
A$media_id
B$post_id
C$attachment_id
D$file_id
Attempts:
3 left
💡 Hint
Common Mistakes
Using a post ID variable instead of attachment ID.
Using undefined variables.
3fill in blank
hard

Fix the error in the code to properly delete an attachment from the media library.

Wordpress
<?php
wp_delete_attachment([1], true);
?>
Drag options to blanks, or click blank then click option'
A$attachment_id
B$media_url
C$post_id
D$file_path
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a post ID or URL instead of attachment ID.
Omitting the second argument to force deletion.
4fill in blank
hard

Fill both blanks to create an array of attachment IDs for images uploaded by the current user.

Wordpress
<?php
$args = [
  'post_type' => '[1]',
  'author' => [2]
];
$attachments = get_posts($args);
?>
Drag options to blanks, or click blank then click option'
Aattachment
Bget_current_user_id()
Cpost
Dget_user_id()
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'post' instead of 'attachment' for post_type.
Using a non-existent function like get_user_id().
5fill in blank
hard

Fill all three blanks to update the alt text of an attachment.

Wordpress
<?php
update_post_meta([1], '[2]', [3]);
?>
Drag options to blanks, or click blank then click option'
A$attachment_id
B_wp_attachment_image_alt
C$alt_text
Dalt_text
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'alt_text' as meta key instead of '_wp_attachment_image_alt'.
Passing the wrong variable for attachment ID.

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