Automattic\WooCommerce\Internal\VariationGallery
ClassicVariationGalleryAdmin::persist_variation_gallery_field
Persist the variation gallery field.
The merchant-facing UI presents featured + gallery as a single ordered list.
Method of the class: ClassicVariationGalleryAdmin{}
No Hooks.
Returns
null. Nothing (null).
Usage
$ClassicVariationGalleryAdmin = new ClassicVariationGalleryAdmin(); $ClassicVariationGalleryAdmin->persist_variation_gallery_field( $variation, $index ): void;
- $variation(WC_Product_Variation) (required)
- Variation being saved.
- $index(int) (required)
- Variation row index.
ClassicVariationGalleryAdmin::persist_variation_gallery_field() ClassicVariationGalleryAdmin::persist variation gallery field code WC 10.9.1
public function persist_variation_gallery_field( WC_Product_Variation $variation, int $index ): void {
// We verify the variation save nonce before firing `woocommerce_admin_process_variation_object`.
if ( ! isset( $_POST['variable_gallery_image_ids'][ $index ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
return;
}
$unified_ids = wp_parse_id_list( wp_unslash( $_POST['variable_gallery_image_ids'][ $index ] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
$featured_id = (int) ( $unified_ids[0] ?? 0 );
$gallery_ids = array_values( array_slice( $unified_ids, 1 ) );
try {
$variation->set_image_id( $featured_id );
$variation->set_gallery_image_ids( $gallery_ids );
LegacyVariationGalleryCompatibility::mark_core_managed( $variation );
} catch ( \Throwable $e ) {
Telemetry::record_event(
Telemetry::EVENT_SAVE_FAILED,
array(
'context' => 'classic_admin',
'reason' => get_class( $e ),
)
);
throw $e;
}
Telemetry::record_event(
Telemetry::EVENT_SAVE_SUCCEEDED,
array(
'context' => 'classic_admin',
'image_count' => count( $unified_ids ),
'is_multi' => count( $unified_ids ) > 1 ? 'yes' : 'no',
)
);
}