Woocommerce

J’ai modifié mon plugin afin qu’il permette la destruction de tous les produits appartenant à la catégorie concernée.
Je ne supprime pas la catégorie. Seulement les enregistrements Woocommerce.

Pour cette raison, je ne m’intéresse qu’aux tables suivantes : wp_postmeta , wp_posts et wp_term_taxonomy.

Je n’explique pas les détails mais pour résumer, wp_posts contient les données de base du produit, wp_postmeta les metas du produit et wp_term_taxonomy mémorise le nombre d’articles pour une catégorie.

function myapiplugin_suppression_enregistrement($categorie ) {
	// en paramètre l'id de la categorie
	// on modifie successivement les tables suivantes : 
	// wp_postmeta, wp_posts, wp_term_taxonomy
	
	global $wpdb;
	
	// wp_postmeta
	$id_a_virer = "SELECT ID FROM wp_posts WHERE post_type ='product' AND post_status = 'publish' AND ID IN (SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN ($categorie) AND (term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy='product_cat')))";
	$requete_wp_postmeta = "DELETE FROM wp_postmeta WHERE post_id IN (".$id_a_virer.")";
	$result = $wpdb->get_results($requete_wp_postmeta, OBJECT);
	
	
	// wp_posts
	$requete_wp_posts = "DELETE FROM wp_posts WHERE post_type ='product' AND post_status = 'publish' AND ID IN (SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN ($categorie) AND (term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy='product_cat')))";
	$result = $wpdb->get_results($requete_wp_posts, OBJECT);
	
	// wp_term_taxonomy
	$requete_wp_term_taxonomy = "UPDATE wp_term_taxonomy SET count=0 WHERE term_id = $categorie"; 
	$result = $wpdb->get_results($requete_wp_term_taxonomy, OBJECT);
	
	return $result;
	
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *