如何在使用Woocommerce Frontend Manager插件时从前端自动更新产品类别

时间:2018-04-03 11:58:39

标签: php wordpress woocommerce

我正在使用Woocommerce前端管理器自定义选项通过插件的自定义选项功能更新产品类别/标签,并将以下代码添加到functions.php(由@Andrew Schultz捐赠的代码);

add_action('save_post_product', 'update_product_category', 20, 3);

function update_product_category( $post_id, $post, $update ) {
$product = wc_get_product( $post_id );
$delivery_methods = array( 'pick-up', 'postal', 'post', 'parcel' );

$delivery_option = get_post_meta($post_id, 'delivery_option', true);

if( ! empty( $delivery_option ) ) {
    $product_cats = $product->get_category_ids();

    foreach( $delivery_methods as $delivery_method) {
        if( $delivery_option === $delivery_method ) {
            $pickup_cat_id = get_term_by('slug', $delivery_method, 'product_cat')->term_id;

            if( $pickup_cat_id && ! in_array( $pickup_cat_id, $product_cats) ) {
                $product_cats[] = $pickup_cat_id;
                $product->set_category_ids($product_cats);
                $product->save();
            }
        }
    }
}
}

从后端更新时很好,但在从前端更新或添加新产品时没有。任何见解? @Andrew Schultz谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定你是如何使用该插件设置post元数据的,因为我对它并不熟悉。我发现一个动作在产品保存到数据库后触发,你可以挂钩以运行我之前编码的相同代码。

CACHE MANIFEST
# 01-01-2001 v1.0 (Change whenever you need to force an update of the cache)

CACHE:
/css/file.css
/js/file.js


NETWORK:
*

FALLBACK: