Directory / plugin
Presswell Art Direction
v2.2.0 · by Presswell
Manage focal-point cropping and on-demand custom image generation in WordPress.
About this plugin
Presswell Art Direction gives editors and developers a consistent way to manage image sizing and cropping in WordPress. Define custom sizes, set focal points, and generate non-core thumbnails only when they are actually needed.
Features
- Control image cropping with focal points
- Define custom image sizes and nested thumbnail variants
- Select custom image sizes directly in the WordPress editor
- Show a different crop on desktop, tablet, and mobile with the Art Directed Image block
- Use image sets and focal points in the core Image block
- Dynamically generate non-core thumbnails on demand
- Run batch regeneration from a dedicated Media tool
- Use Endpoint Mode when filename-based 404 handoff is unavailable
- Import/export size definitions
Focal Point Cropping
Set a focal point for Media Library images to control how custom crops are framed. Mark the visual subject once, and generated thumbnails stay centered on the correct area.
Custom Size Management
Use the settings UI to define and edit custom image sizes. Registered sizes become available when inserting images in the block editor and classic editor workflows.
Block Editor
The Art Directed Image block shows a different image set on desktop, tablet, and mobile, switching at the same breakpoints as the editor’s device preview. Turn on Image Block Support to use your image sets in the core Image block too: its Resolution lists your sets, it serves their real crops instead of CSS aspect ratios, and its sidebar has the focal point editor.
Dynamic Generation + Endpoint Mode
Presswell Art Direction avoids generating every custom size at upload time. WordPress core sizes are generated normally, while custom sizes are generated when requested in templates or by URL.
If filename-based 404 image requests do not reach WordPress (common in some NGINX/server setups), enable Endpoint Mode (/pwad-image/?id=...&size=...). The plugin includes an automatic compatibility check in wp-admin.
Regenerator
The Regenerator screen (Media -> Regenerate Thumbnails) builds a queue and processes images in batches, with progress metrics and retry handling for failed jobs. You can choose exactly which sizes should be regenerated.
Documentation
Public APIs
pwad_add_image_size( $args )
- $args (array) (required) – Keyed array containing
name,key,height,width,crop(optional), and optionallythumbnailsvalues. - Thumbnail keys are prefixed with parent’s key like
[size]-[thumbnail].
Example:
pwad_add_image_size( array(
'name' => 'Square',
'key' => 'square',
'width' => '1200',
'height' => '1200',
'crop' => true,
'thumbnails' => array(
array(
'name' => 'Medium',
'key' => 'medium',
'width' => '800',
'height' => '800',
),
array(
'name' => 'Small',
'key' => 'small',
'width' => '400',
'height' => '400',
),
),
) );
pwad_get_image_sizes()
Returns all currently-available sizes (WordPress defaults + plugin/theme sizes + Presswell Art Direction sizes/thumbnails).
Example:
$sizes = pwad_get_image_sizes();
pwad_get_image( $attachment_ID, $size_key, $attr = array() )
- $attachment_ID (int) (required) – ID of image attachment
- $size_key (string) (required) – Image size identifier (
thumbnail,large,my-size,my-size-mobile, etc.) - $attr (array) (optional) – HTML attributes passed to the rendered image element
Returns an image tag.
Example:
$square_large = pwad_get_image( $img_ID, ‘square’ );
$square_small = pwad_get_image( $img_ID, ‘square-small’, array( ‘class’ => ‘hero-image’ ) );
pwad_get_image_src( $attachment_ID, $size_key )
- $attachment_ID (int) (required) – ID of image attachment
- $size_key (string) (required) – Image size identifier (
thumbnail,large,my-size,my-size-mobile, etc.)
Returns a keyed array containing the file, url, path, height, width, and mime-type values.
Example:
$square_large = pwad_get_image_src( $img_ID, ‘square’ );
$square_small = pwad_get_image_src( $img_ID, ‘square-small’ );
Actions
pwad/image_generated
Fires immediately after a custom crop file is generated so themes/plugins can queue optimizers or post-processing.
Arguments:
- $data[‘attachment_id’] (int) – Attachment ID.
- $data[‘size_key’] (string) – Requested size key.
- $data[‘size_data’] (array) – Registered/requested size definition used for generation.
- $data[‘source_file’] (string) – Source file path from attachment metadata (relative upload path).
- $data[‘generated_file’] (string) – Generated filename for the new crop.
Example:
add_action( ‘pwad/image_generated’, function( $data ) {
// Example: queue optimization when a new crop is created.
if ( ! empty( $data[‘attachment_id’] ) && ! empty( $data[‘generated_file’] ) ) {
do_action( ‘my_optimizer/queue’, $data );
}
} );
Filters
pwad_status_rows
Add or change rows in the status table on the Debug tab.
- $rows (array) – Rows, each an array with
label(string),value(string), andstatus(ok,warning, or empty). Rows without a string label and value are skipped.
Example:
add_filter( ‘pwad_status_rows’, function( $rows ) {
$rows[] = array( ‘label’ => ‘Image CDN’, ‘value’ => ‘Connected’, ‘status’ => ‘ok’ );
return $rows;
} );
WP-CLI
wp pwad regenerate
Regenerates thumbnails.
--queue-per-page=<int>(default200)--batch-size=<int>(default25)--target-seconds=<float>(default5)--resume-last=<0|1>(default0, continue the last interrupted queue)
wp pwad cache-prime
Generates thumbnails based on sitemap.
--sitemap=<url>(optional, auto-detects from robots.txt/common sitemap endpoints)--page-limit=<int>(default unlimited)--image-limit=<int>(default unlimited)--delay-ms=<int>(default250)--timeout=<float>(default10)--retries=<int>(default2)--include-external=<0|1>(default0)--force-endpoint=<0|1>(default0)--report-csv=<path>(optional, writes per-URL status/error report; relative paths are saved privately inwp-content/uploads/pwad-logs/)--dry-run=<0|1>(default0)--resume-last=<0|1>(default0, continue the last interrupted prime run)
wp pwad cache-prune
Deletes cached thumbnails not referenced in sitemap.
--sitemap=<url>(optional, auto-detects from robots.txt/common sitemap endpoints)--batch-size=<int>(default200)--max-images=<int>(default unlimited)--page-limit=<int>(default unlimited)--image-limit=<int>(default unlimited)--timeout=<float>(default10)--grace-days=<int>(default0, uses file modified time)--include-external=<0|1>(default0)--force-endpoint=<0|1>(default0)--report-csv=<path>(optional, writes per-file keep/delete report; relative paths are saved privately inwp-content/uploads/pwad-logs/)--dry-run=<0|1>(default1)--resume-last=<0|1>(default0, continue the last interrupted prune run)
wp pwad cache-clean
Deletes all cached thumbnails.
--batch-size=<int>(default200)--max-images=<int>(default unlimited)--include-default=<0|1>(default0)--dry-run=<0|1>(default1)--resume-last=<0|1>(default0, continue the last interrupted clean run)
wp pwad queue-status
Shows resumable/remaining state for regenerator and cache queue runs.
Privacy
Presswell Art Direction does not send image data to external services. It processes image metadata and generated variants within your WordPress environment.