PDFコンテンツを検索結果の抜粋に追加する
SearchWPの最も強力な機能の1つは、ある投稿の結果の重みを別の投稿に帰属させる機能です。
たとえば、WordPressメディアを投稿に添付すると、その投稿はメディアファイルの「親」になります。SearchWPに、メディアの結果の重みを見つけたときに、添付ファイルページ自体(そもそもほとんど誰も使用しません)にリンクするのではなく、その検索の重みを親に転送するように指示できます。
SearchWPをこのように設定すると、メディアは他の投稿と同じように考慮されますが、すべてのキーワードの重みを親に転送したため、メディアエントリが検索結果ページに直接リンクされることはありません。
サイトのコンテンツによっては、訪問者がPDF自体ではなく、PDFがリンクされている投稿にリダイレクトされるため、より自然なワークフローになります。
コンテキストに応じたPDFスニペットを抜粋に自動的に追加する
この統合をさらに進めるために、各「子」PDFのコンテキストに応じたスニペットを検索結果ページの投稿抜粋に自動的に追加できます。これにより、訪問者は親投稿にクリックする前に、その投稿内のリンクされたPDFでヒットがあったことを示すことができます。
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Add child PDF snippets to SearchWP result excerpt. | |
| // @link https://searchwp.com/documentation/knowledge-base/append-pdf-content-to-search-result-excerpt/ | |
| add_filter( 'get_the_excerpt', function( $excerpt ) { | |
| global $post; | |
| if ( ! $post instanceof WP_Post || ! is_search() || post_password_required() || $post->searchwp_excerpt_found ) { | |
| return $excerpt; | |
| } | |
| $post->searchwp_excerpt_found = true; | |
| $attached_pdfs = get_attached_media( 'application/pdf', $post->ID ); | |
| if ( empty( $attached_pdfs ) ) { | |
| return $excerpt; | |
| } | |
| // The number of words to include in PDF excerpt. | |
| $pdf_excerpt_length = 20; | |
| foreach ( $attached_pdfs as $attached_pdf ) { | |
| $source = \SearchWP\Utils::get_post_type_source_name( 'attachment' ); | |
| $pdf_entry = new \SearchWP\Entry( $source, $attached_pdf->ID, false, false ); | |
| $pdf_excerpt = \SearchWP\Sources\Post::get_global_excerpt( | |
| $pdf_entry, get_search_query(), $pdf_excerpt_length | |
| ); | |
| if ( \SearchWP\Settings::get( 'highlighting', 'boolean' ) ) { | |
| $pdf_excerpt = \SearchWP\Highlighter::apply( $pdf_excerpt, get_search_query() ); | |
| } | |
| if ( ! empty( $pdf_excerpt ) ) { | |
| $pdf_label = get_the_title( $attached_pdf->ID ); | |
| $excerpt .= '<br /><br /><strong>' . wp_kses_post( $pdf_label ) | |
| . '</strong>: ' . wp_kses_post( $pdf_excerpt ); | |
| } | |
| } | |
| return $excerpt; | |
| } ); |
このフィルターを追加すると、検索結果ページに標準の抜粋が表示されますが、投稿に子PDFがあり、それらが検索語句を含んでいる場合、それらの特定のPDFは、検索語句の少なくとも1つを含むPDFからのコンテキストに応じた抜粋とともにタイトルで呼び出されます。これらの呼び出しは元の抜粋に追加されるため、このプロセスで貴重な情報を失うことはありません。


