Cerca nel contenuto dei documenti di prodotto WooCommerce scaricabili (PDF)
Se vendi download di documenti nel tuo negozio WooCommerce, è possibile che SearchWP indicizzi il contenuto di tali documenti per renderlo ricercabile dai tuoi clienti!
Nota: questo (come tutta l'elaborazione dei documenti in SearchWP) richiede che i Download del prodotto scaricabile di WooCommerce siano stati caricati nella libreria multimediale locale di WordPress.
Indice il contenuto dei documenti di WooCommerce
Possiamo sfruttare la capacità di SearchWP di analizzare e rendere ricercabile il contenuto dei documenti leggibili archiviati nella libreria multimediale di WordPress. Questo può essere abbinato alla potente capacità di SearchWP di indicizzare metadati 'extra' nel proprio indice, senza influire sui dati archiviati nella tabella post o postmeta di WordPress.
Il vantaggio di questo approccio sarà quello di indicizzare il contenuto del/i Download di WooCommerce senza esporre l'intero asset.
Per un esempio più generalizzato di indicizzazione di dati 'extra', dai un'occhiata a questo articolo della knowledge base: Aggiungere dati extra alle voci indicizzate
Se desideri rendere ricercabile il contenuto scaricabile di WooCommerce, puoi utilizzare questo hook:
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Tell SearchWP to parse WooCommerce Downloadable Product downloads for document content. | |
| // The content will be extracted from downloadable documents where possible and stored | |
| // in SearchWP's index as a Custom Field with a label of "SearchWP WooCommerce Download Content" | |
| add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) { | |
| if ( 'post.product' !== $entry->get_source()->get_name() || ! class_exists( 'WC_Product' ) ) { | |
| return $data; | |
| } | |
| $product = new \WC_Product( $entry->get_id() ); | |
| $downloads = $product->get_downloads(); | |
| if ( empty( $downloads ) ) { | |
| return $data; | |
| } | |
| // WooCommerce only stores a hashed ID, the filename, and the URL to the file | |
| // but we need to retrieve the Media library ID for each downloadble file. | |
| $download_content = []; | |
| $upload_dir = wp_upload_dir(); | |
| foreach ( $downloads as $key => $download ) { | |
| $relative_file_location = str_replace( trailingslashit( $upload_dir['baseurl'] ), '', $download['data']['file'] ); | |
| // We can use the relative file location to retrieve the post ID we need to parse the PDFs. | |
| $file_id = get_posts( [ | |
| 'post_type' => 'attachment', | |
| 'post_status' => 'inherit', | |
| 'fields' => 'ids', | |
| 'meta_query' => [ [ | |
| 'key' => '_wp_attached_file', | |
| 'value' => $relative_file_location, | |
| ], ], | |
| ] ); | |
| if ( ! empty( $file_id ) ) { | |
| $download_content[] = \SearchWP\Document::get_content( get_post( $file_id[0] ) ); | |
| } | |
| } | |
| $data['meta']['swp_wc_doc_content'] = \SearchWP\Utils::tokenize( $download_content ); | |
| return $data; | |
| }, 20, 2 ); | |
| // Add "SearchWP WooCommerce Download Content" as available option. | |
| add_filter( 'searchwp\source\attribute\options', function( $keys, $args ) { | |
| if ( $args['attribute'] !== 'meta' ) { | |
| return $keys; | |
| } | |
| $content_key = 'swp_wc_doc_content'; | |
| if ( ! in_array( | |
| $content_key, | |
| array_map( function( $option ) { return $option->get_value(); }, $keys ) | |
| ) ) { | |
| $keys[] = new \SearchWP\Option( $content_key, 'SearchWP WooCommerce Download Content' ); | |
| } | |
| return $keys; | |
| }, 20, 2 ); |
Questo hook si aggancerà al processo di indicizzazione di SearchWP e, quando troverà un Prodotto con Download, controllerà tali Download per il contenuto del documento e, una volta trovato, indicizzerà tale contenuto insieme al Prodotto stesso.
Ciò ti consentirà di cercare il contenuto del Download e di ottenere il Prodotto, non il Download, il che a sua volta consentirà al tuo cliente di effettuare l'acquisto.
L'ultimo passaggio qui è assicurarsi di aver aggiunto questo campo personalizzato 'extra' ai Prodotti nel tuo Motore SearchWP, cosa che può essere fatta così:
Nota: Quando si utilizza questo approccio, è possibile (e probabilmente consigliabile) disabilitare i Media dal proprio Motore, poiché il contenuto del Download viene aggiunto al Prodotto.
Con il contenuto del Documento aggiunto ai Prodotti nel tuo Motore, puoi fare clic sul pulsante Salva Motori, ricostruire il tuo indice e sarai pronto!


