Redirect Woocommerce:如果类别页面上只有一个产品,如何自动重定向到单个产品?

Redirect Woocommerce:如果类别页面上只有一个产品,如何自动重定向到单个产品?,redirect,woocommerce,Redirect,Woocommerce,当类别中只有一种产品时,我试图跳过类别归档页面,直接转到单个产品页面 以下是我目前掌握的代码(不起作用): 此代码以Woocommerce中的单一搜索重定向为模型: 谢谢 我想出来了,但不是专门针对Woocommerce:(编辑:现在是。) 在某种程度上,这甚至更好,因为它也重定向单个标记 我想出来了,但不是专门针对Woocommerce:(编辑:现在是。) 在某种程度上,这甚至更好,因为它也重定向单个标记 将此代码添加到functions.php中,这样就可以了 add_action( 't

当类别中只有一种产品时,我试图跳过类别归档页面,直接转到单个产品页面

以下是我目前掌握的代码(不起作用):

此代码以Woocommerce中的单一搜索重定向为模型:


谢谢

我想出来了,但不是专门针对Woocommerce:(编辑:现在是。)


在某种程度上,这甚至更好,因为它也重定向单个标记

我想出来了,但不是专门针对Woocommerce:(编辑:现在是。)


在某种程度上,这甚至更好,因为它也重定向单个标记

将此代码添加到
functions.php
中,这样就可以了

add_action( 'template_redirect', 'woocom_redirect_if_single_product_in_category', 10 );
function woocom_redirect_if_single_product_in_category() {
    if ( is_product_category() ){
        $cat_name   =   sanitize_title( woocommerce_page_title( false ) );
        $args   =   array(
                "post_type"         => "product",
                "posts_per_page"    =>  -1,
                "product_cat"       => $cat_name
        );
        $posts  = new WP_Query( $args );
        if( count( $posts->posts ) == 1 ){
            $one_post_ID    =   $posts->posts;
            $ID =   $one_post_ID[0]->ID;
            wp_redirect( get_permalink( $ID ) );
        }
    }
}

将此代码添加到
functions.php
中,这样就可以了

add_action( 'template_redirect', 'woocom_redirect_if_single_product_in_category', 10 );
function woocom_redirect_if_single_product_in_category() {
    if ( is_product_category() ){
        $cat_name   =   sanitize_title( woocommerce_page_title( false ) );
        $args   =   array(
                "post_type"         => "product",
                "posts_per_page"    =>  -1,
                "product_cat"       => $cat_name
        );
        $posts  = new WP_Query( $args );
        if( count( $posts->posts ) == 1 ){
            $one_post_ID    =   $posts->posts;
            $ID =   $one_post_ID[0]->ID;
            wp_redirect( get_permalink( $ID ) );
        }
    }
}

我试过这个方法,效果很好!只打了一个嗝。我的其余页面显示左侧边栏,但我添加了以下内容:

// WooCommerce Fix - Redirects to page if product is equal to one
add_action( 'template_redirect',
'woocom_redirect_if_single_product_in_category', 10 ); function
woocom_redirect_if_single_product_in_category() {
    if ( is_product_category() ){
        $cat_name   =   sanitize_title( woocommerce_page_title( false ) );
        $args   =   array(
                "post_type"         => "product",
                "posts_per_page"    =>  -1,
                "product_cat"       => $cat_name
        );
        $posts  = new WP_Query( $args );
        if( count( $posts->posts ) == 1 ){
            $one_post_ID    =   $posts->posts;
            $ID =   $one_post_ID[0]->ID;
            wp_redirect( get_permalink( $ID ) );
        }
    } }

它使我的模板显示一个插入页脚的破损边栏,而其他单一产品页面则正确显示。脚本中可能有一个调用错误配置了侧栏位置,它可能调用了默认的单个产品页面模板。如果有人对此进行了修复,我将不胜感激,因为这有点超出了我的能力。

我尝试了这个修复,效果很好!只打了一个嗝。我的其余页面显示左侧边栏,但我添加了以下内容:

// WooCommerce Fix - Redirects to page if product is equal to one
add_action( 'template_redirect',
'woocom_redirect_if_single_product_in_category', 10 ); function
woocom_redirect_if_single_product_in_category() {
    if ( is_product_category() ){
        $cat_name   =   sanitize_title( woocommerce_page_title( false ) );
        $args   =   array(
                "post_type"         => "product",
                "posts_per_page"    =>  -1,
                "product_cat"       => $cat_name
        );
        $posts  = new WP_Query( $args );
        if( count( $posts->posts ) == 1 ){
            $one_post_ID    =   $posts->posts;
            $ID =   $one_post_ID[0]->ID;
            wp_redirect( get_permalink( $ID ) );
        }
    } }

它使我的模板显示一个插入页脚的破损边栏,而其他单一产品页面则正确显示。脚本中可能有一个调用错误配置了侧栏位置,它可能调用了默认的单个产品页面模板。如果有人对此有解决方案,我将不胜感激,因为这有点超出我的能力。

您好,您的代码已将所有类别页面重定向到单个产品页面。@AJD已更新。!请现在检查!您好,您的代码已将所有类别页面重定向到单个产品页面。@AJD已更新。!请现在检查!特别是为了使商业化,将此条件一起使用
is_product_category()
用于产品类别和
is_product_tag()
用于产品标签:
if((is_product_category()| is_product_tag())和&$wp_query->post_count==1){…
谢谢,这很有效!编辑答案以包含您的条件。此代码对我在WooCommerce 4.4上的工作很好,特别感谢WooCommerce将此条件一起使用
is_product_category()
用于产品类别,而
is_product_tag()用于产品标记:
如果((is_product_category)()| | is_product_tag())&&&$wp_query->post_count==1){…
谢谢,这很有效!编辑答案以包含您的条件。这段代码对我在WooCommerce 4.4上的工作很好,谢谢。我建议尝试接受的答案版本。我不知道您正在使用的版本是否工作正常。是的,我试过了,它工作正常,问题是一个未关闭的php标记包装了整个函数文件和一个额外的文件产品本身中的div。第一个答案是('''.''.'./+1'。我建议尝试接受的答案版本。我不知道您使用的版本是否工作正常。是的,我尝试了,它工作了,问题是一个未关闭的php标记,包装了整个函数文件,并且在产品本身中有一个额外的div。('.'./+1'是第一个答案。