Añadir datos extra a las entradas indexadas
Muchas veces el contenido a indexar es visible/editable en la pantalla de edición de las entradas con las que estás trabajando, pero también hay ocasiones en las que quieres añadir datos extra a las entradas mientras SearchWP las indexa para que esos datos también sean buscables.
Podemos usar un par de ganchos de SearchWP para incluir datos arbitrarios junto con el contenido de tu entrada cuando se está ejecutando el indexador de SearchWP.
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 esos ganchos añadidos a tu plugin de Personalizaciones de SearchWP, verás el campo personalizado 'Meta Extra' cuando busques extra, ya que coincide con el nombre de la opción personalizada que creamos en el fragmento anterior.


