php – 将“Sale”产品类别添加到Woocommerce中正在销售的产品中

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 将“Sale”产品类别添加到Woocommerce中正在销售的产品中脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
作为WooCommerce网站的一部分,我希望有一个销售页面,列出销售项目(分页和过滤).我认为最好的方法是将“促销”类别自动添加到销售中的任何帖子中(因为类别页面允许自动过滤和分页).

到目前为止,我有这个代码,以便在保存时以编程方式将销售类别添加到产品中:

function update_test( $PRoduct) { 
wp_set_object_terms($product,'sale','product_cat',true );
}

add_action( 'save_post','update_test',1,2);`

但是,我只希望在产品开始销售时(即已设定销售价格)发生这种情况,以便保存非销售的帖子不会增加销售类别.我尝试了几种不同的东西,但没有运气.我试过这个,但它没有用:

function update_test( $product ) { 
if($product->is_on_sale()){
wp_set_object_terms($product,true );
}
}

add_action( 'save_post',2);`

但这只是让我的网站冻结保存.

有任何想法吗?

安迪

更新2(2018年10月)

save_post是一个wordpress钩子,可以使用$post_id参数并定位所有类型的帖子.您需要首先在条件中定位产品自定义WooCommerce post_tyPE(并发布post_status).

另外因为它不是post对象,所以你不能使用is_on_sale()方法.但您可以使用get_post_meta()函数来检查产品中是否设置了销售价格.

以下是功能齐全且经过测试的代码(仅适用于简单产品):

add_action( 'save_post_product','update_product_set_sale_cat' );
function update_product_set_sale_cat( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }

    if ( ! current_user_can( 'edIT_product',$post_id ) ) {
        return $post_id;
    }

    if( get_post_status( $post_id ) == 'publish' && isset($_POST['_sale_price']) ) {
        $sale_price = $_POST['_sale_price'];

        if( $sale_price >= 0 && ! has_term( 'Sale',$post_id ) ){
            wp_set_object_terms($post_id,true );
        }
    }
}

代码位于活动主题(或活动主题)的function.PHP文件中.经过测试和工作.

相关:Auto remove Sale product category from not on sale products in Woocommerce

脚本宝典总结

以上是脚本宝典为你收集整理的php – 将“Sale”产品类别添加到Woocommerce中正在销售的产品中全部内容,希望文章能够帮你解决php – 将“Sale”产品类别添加到Woocommerce中正在销售的产品中所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。