Les produits sans image peuvent être placé en brouillon lors de la synchronisation.
Explications
Le hook d’action polaris_update_product
utilise l’identifiant de produit WooCommerce $product_id
et les données Polaris $polaris_data
.
On utilise donc la fonction add_action()
avec la priorité par défaut (10) et 2 comme nombre de paramètres attendus.
add_action( 'polaris_update_product', 'NOM_DE_LA_FONCTION', 10, 2 );
Dans cet exemple, nous vérifions que les données Polaris ne contiennent pas d’attribut medias
ou que celui-ci est vide et que le produit courant n’est pas en brouillon :
if ( ( ! isset( $polaris_data['medias'] ) || ! count( $polaris_data['medias'] ) ) && get_post_status( $product_id ) !== 'draft' ) {
// Faire quelquechose
}
Ici, nous voulons le passer à l’état de brouillon
$product = wc_get_product( $product_id ); // Récupération du produit WooCommerce
$product->set_status( 'draft' ); // Affectation de l'état
$product->save(); // Enregistrement
On peut utiliser un procédé similaire pour (re)publier les produits qui ont une image.
Vous pouvez utiliser le code suivant dans le fichier functions.php
de votre thème ou dans votre extension personnalisée.
add_action( 'polaris_update_product', function ( $product_id, $polaris_data ) {
if ( ( ! isset( $polaris_data['medias'] ) || ! count( $polaris_data['medias'] ) ) && get_post_status( $product_id ) !== 'draft' ) {
$product = wc_get_product( $product_id );
$product->set_status( 'draft' );
$product->save();
}
if ( isset( $polaris_data['medias'] ) && count( $polaris_data['medias'] ) && get_post_status( $product_id ) !== 'publish' ) {
$product = wc_get_product( $product_id );
$product->set_status( 'publish' );
$product->save();
}
}, 10, 2 );