Cómo integrar con importaciones/migraciones de contenido
SearchWP reacciona a ciertas operaciones que ocurren dentro de WordPress. Cuando se edita contenido, WordPress informa a SearchWP sobre la edición y SearchWP, a su vez, vuelve a indexar ese contenido editado. Esto mantiene su índice actualizado automáticamente con el tiempo, sin que usted tenga que gestionar nada.
Por naturaleza, las rutinas de importación de contenido (por ejemplo, con WP All Import) realizan muchas ediciones (a veces simultáneas) en un período de tiempo muy corto. Esto puede tener efectos adversos cuando SearchWP reacciona a todas las señales que envía WordPress de que se están realizando muchas ediciones.
Si la importación es lo suficientemente grande y se ejecuta lo suficientemente rápido, el indexador de SearchWP puede inundarse de notificaciones de edición y, finalmente, el índice quedará desincronizado. Esto no es deseable, ya que SearchWP puede empezar a ciclar repetidamente su propio índice o, peor aún, devolver resultados de búsqueda inexactos.
Manejo adecuado de las importaciones de contenido
NOTA: ¡A partir de la versión 4.1.16 de SearchWP, los procesos de WP All Import se manejan automáticamente!
Lea más sobre la integración automática de SearchWP,
o continúe leyendo para implementar la suya propia
Se recomienda, como mínimo, deshabilitar el indexador de SearchWP al ejecutar un script de importación. Esto se puede hacer modificando su propio script de importación o utilizando los ganchos disponibles en su plugin elegido. El pseudocódigo de lo que haremos es el siguiente:
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 ); |
Con este fragmento en su lugar, SearchWP reaccionará mejor a sus importaciones de contenido, y se habrá creado un índice preciso después de que el script de importación haya completado. Esto también permitirá que su importación se ejecute un poco más rápido, ya que SearchWP no competirá por recursos mientras se procesa la importación.

