検索結果がwordpress以外のページ
-
考え方の一例として…
Advanced Custom Fieldsを使ってHTMLが扱えるテキストエリアをメディアの編集画面に設けて
検索結果に表示させたい画像をメディアライブラリに登録し、その画像の編集画面でサイト内検索結果に表示させたい文言とリンク先をテキストエリアに登録しておきす。
そしてSearch Everythingを使って先に設定したカスタムフィールドと画像が検索対象となるように設定します。
そしてテーマの検索に関係するテンプレートに登録した内容を表示されるようカスタマイズすれば完了です。ページ数が多くて面倒な場合は先に画像だけアップしてからCSV等でエクスポートしてそれを編集してインポートすれば多少は楽かと思います。
難点は、もしWordPress外のページが増えたら、その度にWordPress側に登録する必要がありますね。早速ご提案頂きまして、ありがとうございます!
教えて頂いた案、雰囲気はなんとなくイメージできるのですが、
ぱぱっと作業出来ないところがお恥ずかしいです……。Adbanced Custom Fieldsをインストールして試してみたいと思います。
ちょっと考えてみました。
と、言うか実際に自分で書いた事を試したんですが駄目でした(汗)まず、画像を検索対象にすると見せたくもない画像も対象になってしまい、
画像に無駄にカテゴリでも設けて制御しないといけないので駄目でした。
画像を検索するにはSearch Everythingを使用しますが、上記理由からカスタムフィールドのみ検索対象にした場合、画像にカスタムフィールドを含んでいても検索結果に表示されません。
また、このプラグインを使った場合、管理画面の投稿やメディア一覧でページ送りせずに指定ページを表示させようとするとデータベースエラーが出るので全くお勧めできません。
このような理由からAdvanced Custom Fieldsを使う理由も一切無くなりました。で、もう少し真剣に考えてみたらもっと簡単な方法がありました。
まず、アイキャッチ画像とカスタムフィールドが使えるカスタム投稿タイプを一つ作ります。
そのカスタム投稿タイプの投稿タイトルや本文にWordPress外のページの情報を入力してアイキャッチ画像を設定し、カスタムフィールドの名前をurl、値をWordPress外のページのURLで登録します。テーマがTwenty Fourteenなら
content.phpの<div class="entry-meta">より上を以下のようにしてみてください。<?php /** * The default template for displaying content * * Used for both single and index/archive/search. * * @package WordPress * @subpackage Twenty_Fourteen * @since Twenty Fourteen 1.0 */ ?> <?php if ( 'カスタム投稿タイプ名' == get_post_type()): $image_id = get_post_thumbnail_id(); $image = wp_get_attachment_image($image_id, 'large'); echo '<a class="has-post-thumbnail post-thumbnail" href="'.get_post_meta($post->ID , 'url' ,true).'" aria-hidden="true">'.$image.'</a>'; ?> <?php else: ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php twentyfourteen_post_thumbnail(); ?> <?php endif; ?> <header class="entry-header"> <?php if ( in_array( 'category', get_object_taxonomies( get_post_type() ) ) && twentyfourteen_categorized_blog() ) : ?> <div class="entry-meta"> <span class="cat-links"><?php echo get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfourteen' ) ); ?></span> </div> <?php endif; if ( 'カスタム投稿タイプ名' == get_post_type() ) : the_title( '<h1 class="entry-title"><a href="'. get_post_meta($post->ID , 'url' ,true). '" rel="bookmark">', '</a></h1>' ); else : the_title( '<h1 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' ); endif; ?> <div class="entry-meta">カスタム投稿タイプ名や画像サイズは適宜変更してください。
これでWordPressの検索に外のページのリンクも表示できます。リダイレクトさせればテーマを編集しなくて良いですが、自分がやるならと考えたらあまりカッコよくないため却下しました。
これなら余計なプラグインも不要なので無駄な負荷もかかりません。カスタム投稿タイプは意図して表示させようとしない限り、サイト上には出てきませんが、検索エンジンのクローラーが巡回してインデックスしてしまうかもしれないので
single-カスタム投稿タイプ名.phpの名前でテンプレートを作成して中身を<?php $field = get_post_meta( $post->ID, 'url' , true ); if ( $field ) wp_redirect( esc_url( $field) , 301 ); ?>こんな感じにしておけば、そのカスタム投稿タイプのページにアクセスされてもWordPress外のページにリダイレクトします。
ここまで書いてふと思いました。
最終的にリダイレクトさせるならcontent.phpの編集いらんがな… って…
いやいや、最後のはクローラー対策なので自分ならこの方法でやります。-
この返信は8年、 10ヶ月前に
manboが編集しました。
-
この返信は8年、 10ヶ月前に
トピック「検索結果がwordpress以外のページ」には新たに返信することはできません。