产品缺货时如何更改产品状态?(发布到待审核)

时间:2021-05-25 08:05:15

标签: php wordpress woocommerce

在 woocommerce 中,如果缺货,则产品将发布为待处理产品状态。

我尝试了产品发布(使用以下代码),然后它变为待处理状态,但自动无法更改状态。

add_action(
    'woocommerce_product_object_updated_props',
    'change_status_on_product_object_product'
);

function change_status_on_product_object_product($product, $updated_props) {
    $stock = $product->get_stock_quantity();
    $changed_props = $product->get_changes();
    if ($product->get_status() !== 'pending' && ($stock < 1)) {
        update_post_meta(array('ID' => $product->get_id(), 'post_status' => 'pending'));
    }
}

1 个答案:

答案 0 :(得分:0)

$args = array(
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'post_status'    => 'publish',
    'fields'         => 'ids', // duplicate - not assigned
    'meta_query'     => array(
        array(

            'key'    => '_stock_status',
            'value'  => 'outofstock',
        )

    ),
);

$loop_arg            = new WP_Query( $args );

$loop_ids            = $loop_arg->posts;

foreach($loop_ids as $loop      => $loop_id){
   
    wp_update_post( array( 'ID' => $loop_id, 
                  'post_status' => 'pending' ) );
    wp_reset_query();
    echo "<script>console.log('Product updating from publish to pending');</script>";
}