Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fix

Show shipping package title as "Shipment" instead of "Shipment 1"
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,7 @@ This hook allows to disable the compatibility layer for the blockified.

| Argument | Type | Description |
| -------- | ---- | ----------- |
| 1 | \Automattic\WooCommerce\Blocks\Templates\boolean. | |
| 1 | \Automattic\WooCommerce\Blocks\Templates\boolean. | |

### Source

Expand Down Expand Up @@ -941,7 +941,7 @@ Automattic\WooCommerce\Blocks\Package::container()->get( Automattic\WooCommerce\
Filters the shipping package name.

```php
apply_filters( 'woocommerce_shipping_package_name', string $shipping_package_name, string $package_id, array $package )
apply_filters( 'woocommerce_shipping_package_name', string $shipping_package_name, string $package_id, array $package, int $total_packages )
```


Expand All @@ -954,6 +954,7 @@ apply_filters( 'woocommerce_shipping_package_name', string $shipping_package_nam
| $shipping_package_name | string | Shipping package name. |
| $package_id | string | Shipping package ID. |
| $package | array | Shipping package from WooCommerce. |
| $total_packages | int | Total number of shipping packages. |

### Returns

Expand Down
29 changes: 21 additions & 8 deletions plugins/woocommerce/includes/class-wc-cart.php
Original file line number Diff line number Diff line change
Expand Up @@ -1663,7 +1663,7 @@ function ( $package ) {
$index = 1;
foreach ( $shipping_packages as $key => $package ) {
$shipping_packages[ $key ]['package_id'] = $package['package_id'] ?? $key;
$shipping_packages[ $key ]['package_name'] = $this->get_shipping_package_name( $shipping_packages[ $key ], $index );
$shipping_packages[ $key ]['package_name'] = $this->get_shipping_package_name( $shipping_packages[ $key ], $index, count( $shipping_packages ) );
++$index;
}

Expand All @@ -1675,27 +1675,40 @@ function ( $package ) {
*
* @param array $package Shipping package data.
* @param int $index Package number.
* @param int $total_packages Total number of packages.
* @return string
*/
private function get_shipping_package_name( $package, $index ) {
private function get_shipping_package_name( $package, $index, $total_packages ) {

$shipping_package_name = _x( 'Shipment', 'shipping packages', 'woocommerce' );

/**
* If there are multiple packages, use the index to show the package number.
*/
if ( 1 !== $total_packages ) {
$shipping_package_name = sprintf(
/* translators: %d: shipping package number. */
_x( 'Shipment %d', 'shipping packages', 'woocommerce' ),
$index
);
}

/**
* Filters the shipping package name.
*
* @since 4.3.0
* @param string $shipping_package_name Shipping package name.
* @param string $package_id Shipping package ID.
* @param array $package Shipping package from WooCommerce.
* @param int $total_packages Total number of shipping packages.
* @return string Shipping package name.
*/
return apply_filters(
'woocommerce_shipping_package_name',
sprintf(
/* translators: %d: shipping package number */
_x( 'Shipment %d', 'shipping packages', 'woocommerce' ),
$index
),
$shipping_package_name,
$package['package_id'],
$package
$package,
$total_packages
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,11 @@ public function test_get_shipping_packages_includes_package_id_and_package_name(

$packages = $class->get_shipping_packages( false );

$this->assertNotEmpty( $packages, 'Should have at least one shipping package.' );
$this->assertCount( 1, $packages, 'Should have one shipping package.' );
$this->assertArrayHasKey( 'package_id', $packages[0], 'Package should have package_id.' );
$this->assertArrayHasKey( 'package_name', $packages[0], 'Package should have package_name.' );
$this->assertEquals( 0, $packages[0]['package_id'], 'First package should have package_id of 0 (array key).' );
$this->assertStringContainsString( 'Shipment 1', $packages[0]['package_name'], 'First package should have package_name containing "Shipment 1".' );
$this->assertSame( 'Shipment', $packages[0]['package_name'], 'Single package should have package_name of "Shipment".' );
}

/**
Expand Down
Loading