Aggiunta di dati extra alle voci indicizzate
Molte volte il contenuto da indicizzare è visibile/modificabile nella schermata di modifica delle voci con cui stai lavorando, ma ci sono anche volte in cui vuoi aggiungere dati extra alle voci mentre SearchWP le indicizza in modo da rendere ricercabili anche tali dati.
Possiamo usare un paio di hook di SearchWP per includere dati arbitrari insieme al contenuto della tua voce quando l'indicizzatore di SearchWP è in esecuzione.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // @link https://searchwp.com/documentation/knowledge-base/adding-extra-data-to-indexed-entries/ | |
| // Adding extra data to indexed entries in SearchWP. | |
| add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) { | |
| $my_extra_meta_key = 'my_extra_meta'; | |
| // SearchWP can index any data type, array/object values will all be processed. | |
| // For this example we will use a string: | |
| $my_extra_meta = 'This content will be searchable!'; | |
| // Store custom Custom Field along existing postmeta. | |
| $data['meta'][ $my_extra_meta_key ] = $my_extra_meta; | |
| return $data; | |
| }, 20, 2 ); | |
| // Add 'extra' meta as available option for your Source Attributes. | |
| add_filter( 'searchwp\source\attribute\options', function( $keys, $args ) { | |
| if ( $args['attribute'] !== 'meta' ) { | |
| return $keys; | |
| } | |
| // This key is the same as the one used in the searchwp\entry\data hook above, they must be the same. | |
| $my_extra_meta_key = 'my_extra_meta'; | |
| // Add "Extra Meta" Option if it does not exist already. | |
| if ( ! in_array( | |
| $my_extra_meta_key, | |
| array_map( function( $option ) { return $option->get_value(); }, $keys ) | |
| ) ) { | |
| $keys[] = new \SearchWP\Option( $my_extra_meta_key, 'Extra Meta' ); | |
| } | |
| return $keys; | |
| }, 20, 2 ); |
Con tali hook aggiunti al tuo plugin SearchWP Customizations, vedrai il campo personalizzato 'Extra Meta' apparire quando cerchi extra poiché corrisponde al nome dell'opzione personalizzata che abbiamo creato nello snippet sopra.


