Using WordPress ‘file_is_displayable_image’ PHP filter

The file_is_displayable_image WordPress PHP filter determines if an image is displayable in the browser.

Usage

add_filter('file_is_displayable_image', 'your_custom_function', 10, 2);

function your_custom_function($result, $path) {
    // your custom code here

    return $result;
}

Parameters

  • $result (bool) – Whether the image can be displayed. Default is true.
  • $path (string) – Path to the image.

More information

See WordPress Developer Resources: file_is_displayable_image

Examples

Restrict displayable image types

Allow only JPEG and PNG images to be displayed in the browser.

add_filter('file_is_displayable_image', 'restrict_displayable_image_types', 10, 2);

function restrict_displayable_image_types($result, $path) {
    // Check file extension
    $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));

    // Allow only JPEG and PNG images
    if ($ext == 'jpg' || $ext == 'jpeg' || $ext == 'png') {
        return true;
    }

    return false;
}

Force display of SVG images

Force SVG images to be displayable in the browser.

add_filter('file_is_displayable_image', 'force_svg_display', 10, 2);

function force_svg_display($result, $path) {
    // Check file extension
    $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));

    // If the file is an SVG, allow display
    if ($ext == 'svg') {
        return true;
    }

    return $result;
}

Block all images

Prevent all images from being displayed in the browser.

add_filter('file_is_displayable_image', 'block_all_images', 10, 2);

function block_all_images($result, $path) {
    // Block all images
    return false;
}

Allow only images in a specific folder

Allow images to be displayed only if they are in the “approved” folder.

add_filter('file_is_displayable_image', 'allow_specific_folder_images', 10, 2);

function allow_specific_folder_images($result, $path) {
    // Check if image is in the "approved" folder
    if (strpos($path, '/approved/') !== false) {
        return true;
    }

    return false;
}

Display only square images

Allow only square images to be displayed in the browser.

add_filter('file_is_displayable_image', 'display_only_square_images', 10, 2);

function display_only_square_images($result, $path) {
    // Get image dimensions
    list($width, $height) = getimagesize($path);

    // Check if image is square
    if ($width == $height) {
        return true;
    }

    return false;
}