Wordpress Woocommerce:当类别仅包含一个项目时,如何直接跳转到产品页面

Wordpress Woocommerce:当类别仅包含一个项目时,如何直接跳转到产品页面,wordpress,woocommerce,Wordpress,Woocommerce,我有一个顶部菜单,可以显示产品类别。 在本例中,是我正在销售的应用程序的名称 单击此菜单项时,它会显示类别的内容-它应该这样做 但是,由于这个类别只包含一个项目,我想直接跳到产品页面,而不是显示包含一个项目的类别页面 以下是相关页面的链接: 我找不到可以调整输出或重定向的钩子或模板 这类事情已经完成了吗?WooCommerce将只包含一个结果的搜索查询重定向到该结果。你可以看到他们是怎么做的 修改他们的代码会得到如下结果: function so_35012094_template_redire

我有一个顶部菜单,可以显示产品类别。 在本例中,是我正在销售的应用程序的名称

单击此菜单项时,它会显示类别的内容-它应该这样做

但是,由于这个类别只包含一个项目,我想直接跳到产品页面,而不是显示包含一个项目的类别页面

以下是相关页面的链接:

我找不到可以调整输出或重定向的钩子或模板


这类事情已经完成了吗?

WooCommerce将只包含一个结果的搜索查询重定向到该结果。你可以看到他们是怎么做的

修改他们的代码会得到如下结果:

function so_35012094_template_redirect() {
    global $wp_query;

    // Redirect to the product page if we have a single product
    if ( is_product_category() && 1 === $wp_query->found_posts ) {
        $product = wc_get_product( $wp_query->post );
        if ( $product && $product->is_visible() ) {
            wp_safe_redirect( get_permalink( $product->id ), 302 );
            exit;
        }
    }

}
add_action( 'template_redirect', 'so_35012094_template_redirect' );

未经测试,请注意复制/粘贴失败。始终使用,以便您能够找出哪里出了问题。

以上代码对我不起作用。我有一个可行的解决方案,但它会重定向所有单个归档结果。在我的例子中,我还想重定向单个标记

/* Redirect if there is only one product in the category or tag, or anywhere... */

function redirect_to_single_post(){
global $wp_query;
if( is_archive() && $wp_query->post_count == 1 ){
the_post();
$post_url = get_permalink();
wp_safe_redirect($post_url , 302 );
 exit;
}
} 
add_action('template_redirect', 'redirect_to_single_post');

我在这里问了同样的问题:

酷,谢谢@helgatheviking。像往常一样回答得很好。