Coming soon mode - Match shop page when permalink structure is set to plain (#50567)
* Match shop page when permalink structure is set to plain * Revert uninteded change * Match post types * Check for param * Add test for post_type check * Fix tests * Add changefile(s) from automation for the following project(s): woocommerce * Use wp_parse_url * Test returning false * Lint fixes --------- Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
parent
d07cb35247
commit
dac8fa8eba
|
@ -0,0 +1,4 @@
|
|||
Significance: minor
|
||||
Type: fix
|
||||
|
||||
Treat post_type=product as a shop page.
|
|
@ -150,6 +150,18 @@ class WCAdminHelper {
|
|||
}
|
||||
$normalized_path = self::get_normalized_url_path( $url );
|
||||
|
||||
$params = array(
|
||||
'post_type' => 'product',
|
||||
);
|
||||
|
||||
parse_str( wp_parse_url( $url, PHP_URL_QUERY ), $url_params );
|
||||
|
||||
foreach ( $params as $key => $param ) {
|
||||
if ( isset( $url_params[ $key ] ) && $url_params[ $key ] === $param ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// WC store pages.
|
||||
$store_pages = array(
|
||||
'shop' => wc_get_page_id( 'shop' ),
|
||||
|
@ -185,6 +197,7 @@ class WCAdminHelper {
|
|||
}
|
||||
|
||||
$permalink = get_permalink( $page_id );
|
||||
|
||||
if ( ! $permalink ) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -257,6 +257,19 @@ class WC_Admin_Tests_Admin_Helper extends WC_Unit_Test_Case {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test is_store_page with the defined post_type param.
|
||||
*/
|
||||
public function test_is_store_page_with_post_type() {
|
||||
// Test with post_type=product.
|
||||
$this->assertTrue( WCAdminHelper::is_store_page( 'https://example.com/?post_type=product' ) );
|
||||
// Test with post_type=product and other params.
|
||||
$this->assertTrue( WCAdminHelper::is_store_page( 'https://example.com/test?param1=value1&post_type=product¶m2=value2' ) );
|
||||
|
||||
// should return false if post_type is not product.
|
||||
$this->assertFalse( WCAdminHelper::is_store_page( 'https://example.com/test?param1=value1¶m2=value2' ) );
|
||||
}
|
||||
|
||||
/** Test product archive link is store page even if shop page not set. */
|
||||
public function test_is_store_page_even_if_shop_page_not_set() {
|
||||
$shop_page_id = get_option( 'woocommerce_shop_page_id' );
|
||||
|
|
Loading…
Reference in New Issue