Wordpress Woocommerce:仅在独立页面上显示提供的产品

Wordpress Woocommerce:仅在独立页面上显示提供的产品,wordpress,function,woocommerce,Wordpress,Function,Woocommerce,我想创建一个名为“折扣”的独立页面,并显示所有提供的产品,我有以下功能添加到我的儿子主题,但它使商店的主页(所有产品)仅显示提供的产品,因为我可以有此功能,但仅在特定页面上?我突然想到要执行“空”搜索以显示所有折扣产品(使用此功能),我走的路对吗 add_action( 'woocommerce_product_query', 'onsale_custom' ); function onsale_custom( $q ){ $product_ids_on_sale = wc_get_

我想创建一个名为“折扣”的独立页面,并显示所有提供的产品,我有以下功能添加到我的儿子主题,但它使商店的主页(所有产品)仅显示提供的产品,因为我可以有此功能,但仅在特定页面上?我突然想到要执行“空”搜索以显示所有折扣产品(使用此功能),我走的路对吗

add_action( 'woocommerce_product_query', 'onsale_custom' );

function onsale_custom( $q ){

    $product_ids_on_sale = wc_get_product_ids_on_sale();

    $q->set( 'post__in', $product_ids_on_sale );

}

你需要有一种方法来区分不同的页面

我为解决这个问题所做的是在slug
折扣
下创建一个新的空产品类别(slug名称可以更改,但要跟踪它)

然后,我修改了您附加的函数,通过检查是否正在监视此类别,同时在调用此函数时提供类别slug名称

然后在query arg中设置
post\u和取消设置产品类别
,以允许查看所有正在销售的产品

结果是:


add_action( 'woocommerce_product_query', 'onsale_custom' );
function onsale_custom( $query ){
        if ( is_product_category('discounts') ) { // My slug name is 'discounts'
            $product_ids_on_sale = wc_get_product_ids_on_sale();
            $query->set( 'post__in', $product_ids_on_sale );
            unset ($query->query_vars['product_cat']);
        }
}

这太完美了!非常感谢您的宝贵帮助!