Tu connais sûrement cette situation :

- Un contenu est modifié manuellement dans le back-office
- L’import quotidien ne l’écrase pas car le fichier source n’a pas changé
- Résultat : un décalage entre l’import et ce qui est en base

Les solutions possibles
-----------------------

### 1. La méthode simple : le champ de contrôle

Parfait quand tu as :

- Une date de mise à jour dans ton import
- Un champ qui sert de référence unique
- Un besoin de comparaison simple

💡 Le principe : on compare la date stockée avec celle du fichier. Si plus récente = mise à jour.

### 2. La méthode complète : le hash MD5

Idéale pour :

- Les imports avec de nombreux champs customs
- Un besoin de contrôle total
- Éviter les comparaisons champ par champ

Le process en 3 étapes :

1. Récupération des metas actuelles :

```
$post_metas = get_post_meta( get_the_ID() );
// Filtrage des metas à contrôler
// Génération du MD5
```



2. Création du hash pour les nouvelles données (le fichier, l’url d’import)
3. Comparaison des hashs

Le hook magique : pmxi_is_post_to_update
--------------------------------------------

```
add_filter(
	'wp_all_import_is_post_to_update',
	function ( $continue_import, $post_id, $data, $import_id ) {

		// la magie c'est ici :)

		return $continue_import; // default
	},
	10,
	4
);
```



Les paramètres :

- **$continue_import** : le verdict de WP All Import (true/false)
- **$post_id** : l’ID du post concerné
- **$data** : les données du fichier
- **$import_id** : l’ID de l’import

[La doc du hook ici](https://www.wpallimport.com/documentation/action-reference/#wp_all_import_is_post_to_update)

Bonus : Hooks utiles
--------------------

### pmxi_saved_post

```
add_action(
	'pmxi_saved_post',
	function ( $post_id, $xml_node, $is_update ) {

		// Actions post-traitement
		
	},
	10,
	3
);

```



Parfait pour :

- Géocoding
- Enrichissement de données
- Traitements complémentaires
- Etc.

### pmxi_after_xml_import

```
add_action(
	'pmxi_after_xml_import',
	function ( $import_id, $import ) {

		// Actions fin d'import
	},
	10,
	2
);
```



Utilise-le pour :

- Nettoyage global
- Refresh de cache
- Notifications
- Etc.

Pro Tips 🚀
----------

Pour limiter à certains types de contenus :

```
add_filter(
	'wp_all_import_is_post_to_update',
	function ( $continue_import, $post_id, $data, $import_id ) {

		$tmp_current_post_type = get_post_type( $post_id );

		// only for cpt1 & cpt2
		if ( ! in_array( $tmp_current_post_type, array( 'cpt1', 'cpt2' ) ) ) {
			return $continue_import;
		}


		return $continue_import; // default
	},
	10,
	4
);
```



```
add_action(
	'pmxi_saved_post',
	function ( $post_id, $xml_node, $is_update ) {

		$tmp_current_post_type = get_post_type( $post_id );

      	// only for cpt1 & cpt2
		if ( ! in_array( $tmp_current_post_type, array( 'cpt1', 'cpt2' ) ) ) {
			return;
		}

      // la magie c'est ici :)
		
	},
	10,
	3
);
```