Comment intégrer avec les importations/migrations de contenu
SearchWP réagit à certaines opérations qui se produisent dans WordPress. Lorsque le contenu est modifié, WordPress informe SearchWP de la modification, et SearchWP réindexe à son tour ce contenu modifié. Cela maintient votre index à jour automatiquement au fil du temps, sans que vous ayez à gérer quoi que ce soit.
Par nature, les routines d'importation de contenu (par exemple avec WP All Import) effectuent de nombreuses modifications (parfois simultanées) dans un laps de temps très court. Cela peut avoir des effets néfastes lorsque SearchWP réagit à tous les signaux envoyés par WordPress indiquant que de nombreuses modifications ont lieu.
Si l'importation est suffisamment importante et s'exécute suffisamment rapidement, l'indexeur de SearchWP peut être submergé de notifications de modification et l'index finira par être désynchronisé. Ceci est indésirable car SearchWP peut commencer à parcourir son propre index de manière répétée, voire pire, renvoyer des résultats de recherche inexacts.
Gestion appropriée des importations de contenu
NOTE : Depuis la version 4.1.16 de SearchWP, les processus WP All Import sont gérés automatiquement !
En savoir plus sur l'intégration automatique de SearchWP,
ou continuez à lire pour implémenter la vôtre
Il est recommandé de désactiver au minimum l'indexeur SearchWP lors de l'exécution d'un script d'importation. Cela peut être fait en modifiant votre propre script d'importation, ou en utilisant les hooks disponibles dans votre plugin choisi. Le pseudocode de ce que nous allons faire est le suivant :
Pause SearchWP indexer
Tell SearchWP to mark each edited entry for re-indexing
Run import in full
Enable SearchWP indexer
Trigger build of SearchWP index
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Disable SearchWP's automatic integration with WP All Import. | |
| add_filter( 'searchwp\integration\wp-all-import', '__return_false' ); | |
| add_action( 'pmxi_before_xml_import', function( $import_id ) { | |
| \SearchWP::$indexer->pause(); | |
| }, 10 ); | |
| add_action( 'pmxi_saved_post', function( $post_id ) { | |
| $source_name = \SearchWP\Utils::get_post_type_source_name( get_post_type( $post_id ) ); | |
| $source = \SearchWP::$index->get_source_by_name( $source_name ); | |
| // Mark this to be dropped after the import has finished. | |
| \SearchWP::$index->drop( $source, $post_id ); | |
| }, 10 ); | |
| add_action( 'pmxi_after_xml_import', function( $import_id ) { | |
| \SearchWP::$indexer->unpause(); | |
| // Process all entries marked to be dropped. | |
| \SearchWP::$index->unpause(); | |
| \SearchWP::$index->trigger(); | |
| }, 10 ); |
Avec cet extrait en place, SearchWP réagira mieux à vos importations de contenu, avec un index précis construit après la fin du script d'importation. Cela permettra également à votre importation de s'exécuter un peu plus rapidement car SearchWP ne sera pas en concurrence pour les ressources pendant le traitement de l'importation.

