Wp media regenerate (WP-CLI)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

wp media regenerate:

  • Regenerates thumbnails for one or more attachments.
  • Dit blijkt de oplossing te zijn voor update-lag zoals ik die ervoer in maart 2021 - Update-lag (WordPress)
$ wp help media regenerate

NAME

  wp media regenerate

DESCRIPTION

  Regenerates thumbnails for one or more attachments.

SYNOPSIS

  wp media regenerate [<attachment-id>...] [--image_size=<image_size>] [--skip-delete] [--only-missing] [--yes]

OPTIONS

  [<attachment-id>...]
    One or more IDs of the attachments to regenerate.

  [--image_size=<image_size>]
    Name of the image size to regenerate. Only thumbnails of this image size will be regenerated, thumbnails of other
    image sizes will not.

  [--skip-delete]
    Skip deletion of the original thumbnails. If your thumbnails are linked from sources outside your control, it's
    likely best to leave them around. Defaults to false.

  [--only-missing]
    Only generate thumbnails for images missing image sizes.

  [--yes]
    Answer yes to the confirmation message. Confirmation only shows when no IDs passed as arguments.

EXAMPLES

    # Regenerate thumbnails for given attachment IDs.
    #
    $ wp media regenerate 123 124 125
    Found 3 images to regenerate.
    1/3 Regenerated thumbnails for "Vertical Image" (ID 123).
    2/3 Regenerated thumbnails for "Horizontal Image" (ID 124).
    3/3 Regenerated thumbnails for "Beautiful Picture" (ID 125).
    Success: Regenerated 3 of 3 images.

    # Regenerate all thumbnails, without confirmation.
    #
    $ wp media regenerate --yes
    Found 3 images to regenerate.
    1/3 Regenerated thumbnails for "Sydney Harbor Bridge" (ID 760).
    2/3 Regenerated thumbnails for "Boardwalk" (ID 757).
    3/3 Regenerated thumbnails for "Sunburst Over River" (ID 756).
    Success: Regenerated 3 of 3 images.

    # Re-generate all thumbnails that have IDs between 1000 and 2000.
    #
    $ seq 1000 2000 | xargs wp media regenerate
    Found 4 images to regenerate.
    1/4 Regenerated thumbnails for "Vertical Featured Image" (ID 1027).
    2/4 Regenerated thumbnails for "Horizontal Featured Image" (ID 1022).
    3/4 Regenerated thumbnails for "Unicorn Wallpaper" (ID 1045).
    4/4 Regenerated thumbnails for "I Am Worth Loving Wallpaper" (ID 1023).
    Success: Regenerated 4 of 4 images.

    # Re-generate only the thumbnails of "large" image size for all images.
    #
    $ wp media regenerate --image_size=large
    Do you really want to regenerate the "large" image size for all images? [y/n] y
    Found 3 images to regenerate.
    1/3 Regenerated "large" thumbnail for "Sydney Harbor Bridge" (ID 760).
    2/3 No "large" thumbnail regeneration needed for "Boardwalk" (ID 757).
    3/3 Regenerated "large" thumbnail for "Sunburst Over River" (ID 756).
    Success: Regenerated 3 of 3 images.

Examples 2021.03

wp media regenerate 19328   # 19328 = attachment-id
# Regenerate all images
#
# * Approx. 33.000 images (x several presets)
# * Processing speed: About 100 images/minute
# * Total time: 8h24min
#
wp media regenerate

Examples 2022.08

  • 3.398 images
  • Server-sided

Optimize with parallelisation

This doesn't work yet - Maybe something wrong with seq as it is quite new to me, but promising nevertheless:

################################################################################
# Regenerate all thumbnails
################################################################################
#
regenerate_all_thumbnails()
{
	#
	# Regenerate all thumbnails
	########################################
	#
	#
	# Initialisation
	########################################
	#
	echo ""; echo ""; echo "### regenerate_all_thumbnails()..."; echo ""
	if [ -z "$path" ]; then	echo "	Variable 'path' not provided. Exiting"; exit; fi
	if [ -z "$number_of_images" ]; then echo "	Variable 'number_of_images' not provided. Exiting"; exit; fi
	if [ -z "$number_of_threads" ]; then echo "	Variable 'number_of_threads' not provided. Exiting"; exit; fi
	cd $path

	offset_tmp=$(($number_of_images/$(($number_of_threads-1))))
	echo "	offset_tmp: $offset_tmp"

	i=0
	for ((i; i<=$number_of_images; ((i=i+$offset_tmp))))
	do
		end_tmp=$(($i+$offset_tmp-1))
		#
		echo "Start: $i"
		echo "End: $end_tmp"

		seq $i $end_tmp | xargs wp media regenerate &
		
	done		
}

Zie ook