Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 产品缺货时如何更改产品状态?(发布到待审核)_Php_Wordpress_Woocommerce - Fatal编程技术网

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

Php 产品缺货时如何更改产品状态?(发布到待审核),php,wordpress,woocommerce,Php,Wordpress,Woocommerce,在woocommerce中,如果缺货,则产品将发布为待定产品状态 我尝试了产品发布(使用以下代码),然后它变为挂起,但它无法自动更改状态 add\u操作( “woocommerce\u产品\u对象\u更新的\u道具”, '更改产品上的\u状态\u对象\u产品' ); 功能更改\u产品上的状态\u对象\u产品($product$updated\u props){ $stock=$product->get_stock_quantity(); $changed_props=$product->get_

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

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

add\u操作(
“woocommerce\u产品\u对象\u更新的\u道具”,
'更改产品上的\u状态\u对象\u产品'
);
功能更改\u产品上的状态\u对象\u产品($product$updated\u props){
$stock=$product->get_stock_quantity();
$changed_props=$product->get_changes();
如果($product->get_status()!='pending'&($stock<1)){
更新_post_meta(数组('ID'=>$product->get_ID(),'post_status'=>'pending');
}
}
$args=array(
“post_类型”=>“产品”,
“每页帖子数”=>-1,
“发布状态”=>“发布”,
'字段'=>'ID',//重复-未分配
“元查询”=>数组(
排列(
'键'=>''库存状况',
'value'=>'outofstock',
)
),
);
$loop\u arg=新的WP\u查询($args);
$loop\u id=$loop\u arg->posts;
foreach($loop\u id为$loop=>$loop\u id){
wp_update_post(数组('ID'=>$loop_ID,
“post_状态”=>“待定”);
wp_reset_query();
echo“console.log('产品从发布更新为挂起');”;
}

此状态应在何时更改?下单后,当产品售罄时,或当您手动编辑并保存产品时?一旦产品缺货,则发布产品将是草稿或待审核,这并不能完全回答我的问题。客户下订单后,产品可能会“脱销”(自动)。但您也可以通过产品编辑设置手动调整“缺货”状态。在哪种情况下应该进行更改(发布到挂起状态)?由于两种情况都需要两个单独的代码。产品缺货的情况下,我想将产品发布状态更改为草稿或挂起(将自动),每当产品有库存时,管理员将再次发布该产品
$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>";
}