_wp_image_editor_choose() – Tests which editors are capable of supporting the request.

You appear to be a bot. Output may be restricted

Description

Tests which editors are capable of supporting the request.

Usage

$string|false = _wp_image_editor_choose( $args );

Parameters

$args
( array ) optional – Optional. Array of arguments for choosing a capable editor. Default empty array.

Returns

string|false Class name for the first editor that claims to support the request. False if no editor claims to support the request.

Source

File name: wordpress/wp-includes/media.php
Lines:

1 to 55 of 55
function _wp_image_editor_choose( $args = array() ) {
  require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
  require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
  require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php';
  
/**
 * Filters the list of image editing library classes.
 *
 * @since 3.5.0
 *
 * @param string[] $image_editors Array of available image editor class names. Defaults are
 *                                'WP_Image_Editor_Imagick', 'WP_Image_Editor_GD'.
 */
  $implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_Imagick', 'WP_Image_Editor_GD' ) );
  $supports_input  = false;

  foreach ( $implementations as $implementation ) {
    if ( ! call_user_func( array( $implementation, 'test' ), $args ) ) {
      continue;
    }

    // Implementation should support the passed mime type.
    if ( isset( $args['mime_type'] ) &&
      ! call_user_func(
        array( $implementation, 'supports_mime_type' ),
        $args['mime_type']
      ) ) {
      continue;
    }

    // Implementation should support requested methods.
    if ( isset( $args['methods'] ) &&
      array_diff( $args['methods'], get_class_methods( $implementation ) ) ) {

      continue;
    }

    // Implementation should ideally support the output mime type as well if set and different than the passed type.
    if (
      isset( $args['mime_type'] ) &&
      isset( $args['output_mime_type'] ) &&
      $args['mime_type'] !== $args['output_mime_type'] &&
      ! call_user_func( array( $implementation, 'supports_mime_type' ), $args['output_mime_type'] )
    ) {
      // This implementation supports the imput type but not the output type.
      // Keep looking to see if we can find an implementation that supports both.
      $supports_input = $implementation;
      continue;
    }

    // Favor the implementation that supports both input and output mime types.
    return $implementation;
  }

  return $supports_input;
}
 

 View on GitHub View on Trac