WooCommerce 产品搜索时重定向到特定页面 returns "no product found"

Redirect to a specific page when WooCommerce product search returns "no product found"

在 Woocommerce 中,我尝试使用以下代码片段重定向到我网站的特定页面,而不是在空产品搜索中显示 "no result found"。

现在短代码 [insert page id="99"] 不起作用,并且 [insert page id="99"] 显示为纯文本。 如果我使用任何简码,如 '[recent_products per_page="4"]',它会显示产品。

remove_action( 'woocommerce_no_products_found', 'wc_no_products_found' );
add_action( 'woocommerce_no_products_found', 'show_products_on_no_products_found', 20 );
function show_products_on_no_products_found() {
    echo '<h4>' . __( 'Are u looking for this?', 'domain' ) . '</h4>';
    echo do_shortcode( '[insert page id="99"]' );
}

但我想要重定向到一个特定的 WordPress 页面,post id 是 99。

如何在产品搜索时将用户重定向到特定页面 returns "no product found"?

使用 template_redirect 挂钩,当产品查询搜索中有 "no results found" 时,您可以将用户重定向到特定页面,例如:

add_action( 'template_redirect', 'no_products_found_redirect' );
function no_products_found_redirect() {
    global $wp_query; 
    if( isset($_GET['s']) && isset($_GET['post_type']) && 'product' === $_GET['post_type'] 
    && ! empty($wp_query) && $wp_query->post_count == 0 ) {
        wp_redirect( get_permalink( 99 ) );
        exit();
    }
}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。