SearchWP Documentation

Consulta la guía de instalación, explora la base de conocimiento, descubre los numerosos hooks de SearchWP

Añadir Contenido de Documento al Contenido de la Entrada Principal

Este artículo es una ampliación de Añadir datos adicionales a las entradas indexadas

SearchWP tiene la capacidad de transferir el peso de la relevancia en varias direcciones. Una dirección es particularmente aplicable a los medios, ya que puede hacer que SearchWP transfiera peso para las entradas de medios a su publicación respectiva de 'Subido a'. En la base de datos, esta relación se establece utilizando la columna post_parent.

Cuando esta transferencia de peso se ha configurado en los ajustes del Motor (y tomando como ejemplo los PDF), al buscar contenido que aparece en un PDF, el resultado que SearchWP devuelve no será el PDF en sí, sino la publicación a la que se ha adjuntado.

¡Dependiendo de tu sitio y circunstancias, esto puede ser muy beneficioso!

Sin embargo, existen algunos casos extremos y, a veces, la transferencia de peso no es algo que desees que ocurra en todos los casos. Podemos aprovechar la adaptabilidad de SearchWP y personalizar nuestra implementación para, en su lugar:

  • Deshabilitar los medios del Motor de SearchWP por completo
  • Enganchar el indexador de SearchWP y recuperar cualquier PDF 'hijo' para las publicaciones a medida que se indexan

Esta aplicación dinámica nos permite evaluar mejor la situación caso por caso.

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/append-document-content-to-parent-post-content/
// Retrieve child PDF content and add as 'extra' data to a SearchWP Entry.
add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) {
// Convert the SearchWP Entry into it's native object type.
$entry = $entry->native();
// We only want to consider WP_Post objects.
if ( ! $entry instanceof \WP_Post ) {
return $data;
}
// Retrieve PDFs that have been uploaded to this Entry.
$pdfs = get_posts( [
'post_type' => 'attachment',
'post_mime_type' => 'application/pdf',
'post_status' => 'inherit',
'nopaging' => true,
'post_parent' => $entry->ID,
] );
if ( empty( $pdfs ) ) {
return $data;
}
// Retrieve PDF content for PDFs and store as extra data.
$data['meta'][ 'searchwp_child_pdf_content' ] = array_map( function( $pdf ) {
return \SearchWP\Document::get_content( $pdf );
}, $pdfs );
return $data;
}, 20, 2 );
// Add "Attached PDF Content" as available option to SearchWP 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.
$pdf_content_key = 'searchwp_child_pdf_content';
// Add "Attached PDF Content" Option if it does not exist already.
if ( ! in_array(
$pdf_content_key,
array_map( function( $option ) { return $option->get_value(); }, $keys )
) ) {
$keys[] = new \SearchWP\Option( $pdf_content_key, 'Attached PDF Content' );
}
return $keys;
}, 20, 2 );

Estos ganchos se conectan al proceso de indexación de SearchWP y, para cada publicación (por ejemplo, Publicaciones, Páginas, Tipos de Publicación Personalizados), buscarán cualquier PDF que se haya 'subido a' esta publicación actual (utilizando la relación establecida post_parent) y luego analizarán cada uno de esos PDF en busca de contenido.

El contenido de todos los PDF 'hijo' se almacenará como un Campo Personalizado adicional con el nombre searchwp_child_pdf_content. El segundo gancho agregará este Campo Personalizado adicional al menú desplegable de Campos Personalizados al administrar los Atributos de la publicación en tu Motor de SearchWP y la entrada tendrá el nombre de Contenido de PDF Adjunto, lo que te permitirá asignar un peso de relevancia individual al contenido extraído del PDF.

Nota: Para que este cambio surta efecto, deberás recrear tu índice usando el botón en la pestaña Motores de la pantalla de configuración de SearchWP.

Cree hoy mismo una mejor experiencia de búsqueda en WordPress

No vuelva a perder visitantes por resultados de búsqueda inútiles. SearchWP facilita la creación de su propia búsqueda inteligente en WordPress.

Get SearchWP Now
Icono de múltiples motores de búsqueda