Como Integrar com Importações/Migrações de Conteúdo
O SearchWP reage a certas operações que ocorrem no WordPress. Quando o conteúdo é editado, o WordPress informa o SearchWP sobre a edição e, por sua vez, o SearchWP reindexa esse conteúdo editado. Isso mantém seu índice atualizado automaticamente ao longo do tempo, sem que você precise gerenciar nada.
Por natureza, rotinas de importação de conteúdo (por exemplo, com WP All Import) fazem muitas edições (às vezes simultâneas) em um curto período de tempo. Isso pode ter efeitos adversos quando se trata do SearchWP reagir a todos os sinais enviados pelo WordPress de que muitas edições estão ocorrendo.
Se a importação for grande o suficiente e for executada rápido o suficiente, o indexador do SearchWP pode ficar sobrecarregado com notificações de edição e, eventualmente, o índice ficará dessincronizado. Isso é indesejável, pois o SearchWP pode começar a percorrer seu próprio índice repetidamente ou, pior ainda, retornar resultados de pesquisa imprecisos.
Manuseio adequado de importações de conteúdo
OBSERVAÇÃO: A partir da versão 4.1.16 do SearchWP, os processos do WP All Import são tratados automaticamente!
Leia mais sobre a integração automática do SearchWP,
ou continue lendo para implementar a sua própria
Recomenda-se, no mínimo, desativar o indexador do SearchWP ao executar um script de importação. Isso pode ser feito modificando seu próprio script de importação ou utilizando os hooks disponíveis no seu plugin escolhido. O pseudocódigo para o que faremos é o seguinte:
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 ); |
Com este trecho implementado, o SearchWP reagirá melhor às suas importações de conteúdo, com um índice preciso sendo construído após a conclusão do script de importação. Isso também permitirá que sua importação seja executada um pouco mais rápido, já que o SearchWP não estará competindo por recursos enquanto a importação estiver processando.

