首页 > 解决方案 > 当 WooCommerce 产品搜索返回“未找到产品”时重定向到特定页面

问题描述

在 Woocommerce 中,我尝试使用以下代码片段重定向到我网站的特定页面,而不是在空产品搜索中显示“未找到结果”。

现在短代码[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"]' );
}

但我想要的是重定向到帖子 ID 为 99 的特定 WordPress 页面。

当产品搜索返回“未找到产品”时,如何将用户重定向到特定页面?

标签: wordpresswoocommercecode-snippetswordpress-shortcode

解决方案


使用template_redirect钩子,您可以在产品查询搜索中“未找到结果”时将用户重定向到特定页面,例如:

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 文件中。测试和工作。


推荐阅读