Comment masquer les produits sans images ?


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 );