web-dev-qa-db-fra.com

Comment mettre à jour l'état du stock de produit variable avec le code

J'ai l'identifiant du produit: - $posts. Maintenant, je dois changer le stock de variation de produit variable en stock supérieur en utilisant le code.J'ai le code de fragment ci-dessous, mais il ne met pas à jour le stock de variation du produit. alors quelqu'un me dit comment faire cela.

$children = get_posts( array(
      'post_parent'   => $posts,
      'posts_per_page'=> -1,
      'post_type'   => 'product_variation',
      'fields'     => 'ids',
      'post_status'  => 'publish'
    ) );

    $out_of_stock_staus = 'outofstock';

    foreach ( $children as $child_id ) {
        echo $child_idss= $child_id->ID;
      echo $child_stock_status = get_post_meta( $child_id, '_stock_status', true );
     // $child_stock_status = $child_stock_status ? $child_stock_status : 'instock';
        //wc_update_product_stock_status( $product_id, $stock_statusss );
        update_post_meta( $child_id, '_stock_status', wc_clean( $out_of_stock_staus ) );
    }
2
Sanjay Nakate

La plupart des parties de votre code étaient inutiles.

En supposant que vous obteniez le bon ensemble de publications avec votre get_posts(), vous pouvez simplement parcourir ces publications et mettre à jour la méta.

Vous avez également eu une confusion des variables et des objets dans votre boucle et vous avez essayé de mettre à jour/obtenir des informations en passant un objet de publication au lieu d'un $id.

$children = get_posts( array(
    'post_parent'   => $posts,
    'posts_per_page'=> -1,
    'post_type'   => 'product_variation',
    'post_status'  => 'publish'
) );

$out_of_stock_staus = 'outofstock';

foreach ( $children as $thischild ) {

    update_post_meta( $thischild->ID, '_stock_status', wc_clean( $out_of_stock_staus ) );

}
2
fischi