[WordPressテーマ作成の手順15]本日のINDEXcategory.phpをコピーしてsearch.phpを作る検索結果一覧の表示用のテンプレートについてsearch.phpの編集the_search_query()で「検索ワード」をタイトルに出力ループ内で検索ワードにマッチする記事をチェックさせるfunction.phpに追記する0か未入力で検索した場合でもsearch.phpを使うために検索一覧に表示させたくない記事を除外するスポンサーリンクcategory.phpをコピーしてsearch.phpを作るWordPressのテーマ作成13で作った「category.php」をコピーして「search.php」という名前に変更。テンプレートとして使用する。search.phpで表示する。抜粋文を使ったコンパクトな一覧表示をしたいなら、テンプレート名「search.php」のファイルを作る必要がある。超初心者のサーバー移転とドメイン移管&ついでにWordPressも!search.phpの編集the_search_query()で「検索ワード」をタイトルに出力search.phpを作ったら、まずはタイトル部分を編集。タイトルに「検索ワード」を出力させます。search」の検索ワードで検索した場合のタイトル部分)本ブログではソースはこのように。本ブログのグリッドシステムによるものです。4行目の「the_search_query()」で「検索ワード」を出力。ループ内で検索ワードにマッチする記事をチェックさせる次に、記事の一覧部分を編集。ここはコピー元のcategory.phpとプレビューはまったく同じにするので、ほぼそのまま使えるが、1点だけ変更が必要。ループ内で「検索ワードにマッチする該当記事があるかどうか」をチェックさせる。覚え書き*本ブログではこのように。<p>検索キーワードに該当する記事がございませんでした。カテゴリーやタグから探してみてください。本ブログのグリッドシステムによるものです。ループの最初のif文で、元は「have_posts()」だけだったところに「get_search_query()」を条件として追加する。(2行目)これだけでWordPressは検索ワードとマッチする記事があるかどうかを探してくれる。このあとは変更しなくてOK。ページャー(7〜16行)もそのまま流用。検索ワードにマッチした記事がない場合、のっぺらぼうになってしまうので、else文を足して(17行目から)、該当記事が無かった場合のテキストを足してみた。(20,21行目)function.phpに追記する上記までで、検索結果をsearch.phpで表示するようになった。このままだとちょっとだけ不都合があるので、function.phpを使って調整する。0か未入力で検索した場合でもsearch.phpを使うために検索ワードが未入力のまま検索ボタンを押したり、「0」と入力して検索した場合、search.phpがテンプレートとして使われない(index.phpが使われる)のだそうだ。そんな時でもsearch.phpで表示させるために、function.phpに以下を追記。'search_template_redirect');}関数「search_template_redirect」を作って、$wp_queryでsearch.phpを使うように指定。10行目からのif文で、「s(検索ワード)」が「false(0か未入力)」のとき、関数「search_template_redirect」を実行すると指定。(WordPressは検索ワードを「s」に格納し$_GETで使用するんだそうです)「template_redirect(11行目)」は「アクションフック」の1つで、WordPressがテンプレートを選ぶ直前に実行されるんだって。検索一覧に表示させたくない記事を除外する検索ワードにマッチしても、検索一覧に表示させたくない記事(投稿・固定ページ)もある。本ブログの場合は、固定ページの「about」や「全記事一覧」をはずしたかった。表示されても意味無いので...。そんな時は、以下のソースで記事のIDを指定すれば除外してくれる。」の配列の数字がID。カンマ(,)で区切って複数指定できる。「pre_get_posts(7行目)」もWordPressの「アクションフック」の1つで、管理画面を含むすべての記事の取得のタイミングで実行されるんだって。使って記事の抽出条件を変更(「fb_search_filter」を呼び出し)しているのね。*記事のIDとは管理画面の各記事(投稿も固定ページも)の編集画面のアドレスバーで、「post=」で確認できる。「http://○○○.com/wp-admin/post.php?post=20&action=edit」だったら、IDは20。Embedカードのリンクを別ウィンドウで開く(PCのみ。Embedカード(ブログカード)の「テンプレートの構成」や「HTML要素のクラス名」などを調べました。Embedカード(ブログカード)について調べたことをメモっています。jQuery、WordPressなど、Webデザイン関連をメモっていく覚え書きサイトです。Reserved.^。