サポート » 使い方全般 » 検索結果がwordpress以外のページ

  • sacky

    (@sacky)


    基本的な部分はwordpressで作っているのですが、
    一部ページなどはそれ以外で作成して、FFFTPで同じドメイン内に入れています。

    検索をwordpress内で作成したいと考えいるのですが、
    その場合はそれ以外のページは検索対象にはいってこないですよね……。

    ドメイン全体を対象とするようなプラグインなどはございますでしょうか?
    第一希望は、Googleカスタム検索のようなテキスト検索結果ではなく、
    検索結果をイメージで表現できるような形だと一番嬉しいのですが。

    宜しくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • manbo

    (@manbo)

    考え方の一例として…

    Advanced Custom Fieldsを使ってHTMLが扱えるテキストエリアをメディアの編集画面に設けて
    検索結果に表示させたい画像をメディアライブラリに登録し、その画像の編集画面でサイト内検索結果に表示させたい文言とリンク先をテキストエリアに登録しておきす。
    そしてSearch Everythingを使って先に設定したカスタムフィールドと画像が検索対象となるように設定します。
    そしてテーマの検索に関係するテンプレートに登録した内容を表示されるようカスタマイズすれば完了です。

    ページ数が多くて面倒な場合は先に画像だけアップしてからCSV等でエクスポートしてそれを編集してインポートすれば多少は楽かと思います。
    難点は、もしWordPress外のページが増えたら、その度にWordPress側に登録する必要がありますね。

    早速ご提案頂きまして、ありがとうございます!
    教えて頂いた案、雰囲気はなんとなくイメージできるのですが、
    ぱぱっと作業出来ないところがお恥ずかしいです……。

    Adbanced Custom Fieldsをインストールして試してみたいと思います。

    恐らくお望みのようなプラグインは無いと思いますので、自力でどうにかするしかないでしょう。
    ちなみにお使いのテーマは何ですか?

    使用テーマは、「twentyfourteen」になります。

    ちょっと考えてみました。
    と、言うか実際に自分で書いた事を試したんですが駄目でした(汗)

    まず、画像を検索対象にすると見せたくもない画像も対象になってしまい、
    画像に無駄にカテゴリでも設けて制御しないといけないので駄目でした。
    画像を検索するには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の編集いらんがな… って…
    いやいや、最後のはクローラー対策なので自分ならこの方法でやります。

    • この返信は2 ヶ月、 3 週間前に  manbo さんが編集しました。

    ●manboさん

    とても丁寧にご返答いただきまして、ありがとうございます!
    早速試してみますが、内容を確認しながらになりそうなので泣、
    時間掛かりそうなので、先に返信させて頂きました。

    また実際にやってみて、理解できない箇所がありましたら、
    ご相談させてくださいませ。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。