search.phpの作成
search.phpを作成した時のメモです。
search.phpについては、そのほかのindex系や単体ページ系のテンプレートとは異なる部分がいくつかあり、その部分をまとめておきたいと思います。
なお、今回は検索ページと検索結果ページを一つにまとめる構成にしています。
コード
hp
search.php独自の部分は?
the_search_query();
「検索された語句」を出力する関数があります。今回はヘッダーの中に設置したh1のテキストとして出力しています。ただ、検索を経ずにこのページに来ることもあるとすると、検索クエリが含まれているかどうかを判別しないといけないですね。というわけでget_search_queryを使って条件分岐を行ってます。
説明
検索が行われたときに、そのリクエストの検索クエリを表示します。このファンクションは HTML 属性の中 (以下に示す「検索窓」の例のように) でも安全に使えます。
値を取得するには get_search_query / en を使ってください。
使い方
<?php the_search_query(); ?>
get_search_form();
get_search_formを使うことで、WordPressの検索フォームを設置することができます。デフォルトのデザインから変更するにはsearchform.phpを作成を利用しますが、その点はまた次回に。
検索結果画面のクエリ
これはテーマファイルの名称がきちんとsearch.phpになっていれば通常のループで問題ないみたいです。
ループについて|WordPressテーマの作り方
ページ送りがデフォルトだったり、サイドバーが一切なかったりしてますが、テーマを利用し始めました。使いながら少しつ良くしていきたいなと思います。 あと、はてなブログからgithub.ioへ引っ越しました。VCCW+StaticPress+github.ioの組み合わせで無料ホスティング。 さてタイトルの件ですが、今現在ほとんどのページでアイキャッチを設定していません。イコール、インデックス系のページにはサムネイルがありません。大事なのは理解しているのですが、正直若干面倒だな…と思うんですよね。 このテーマのヘッダーデザインはそういう理由だったりもします。この作りなら忘れてしまってもカッコつくかなと。 とは言え、カテゴリとかタグのページにはどうしても必要ですし、これまで設定してこなかった分を一つ一つ設定するよりアイキャッチ画像のデフォルト設定をしてしまった方が勉強にもなるし一石二鳥だ!というわけでアイキャッチにデフォルト設定をかけていきます。 WordPressのアイキャッチ画像に任意のデフォルト画像を登録する方法 デフォルト画像はこちらを設定します。まずは任意の画像をアップ。全投稿を更新します。 before after まず、フックになっているpost_saveですが、Codexによると インポート機能の利用、投稿・ページ編集フォームの利用、XMLRPCでの投稿、メールでの投稿のうちいずれかの方法で投稿・ページが作成・更新された際に実行する。実行されるタイミングはデータがデータベースに保存された後。アクション関数引数: 投稿 ID投稿 ID は最後に保存した投稿ではなく投稿履歴を参照していることもある。実際の投稿の ID を取得するには、[[関数リファレンス/wp_is_post_revision()]] を使う。 とのこと。要は何かしら投稿が保存されたタイミングで何かしたいときにどうぞーということですね。で、引数にはpost_idが渡されるので、保存が行われた投稿に対してのみの動作になると。なるほど。 実際の処理の流れは、 と。post_meta系は色々と使い道がありそうですね。以上、デフォルトのアイキャッチを設定する方法でした。
若干手間は増えますが、そのあたりの自動化も課題としてやっていきたいなと思います。特定の画像をデフォルト画像としてアイキャッチに設定する方法
add_action( 'save_post', 'save_default_thumbnail' );
function save_default_thumbnail( $post_id ) {
$post_thumbnail = get_post_meta( $post_id, $key = '_thumbnail_id', $single = true );
if ( !wp_is_post_revision( $post_id ) ) {
if ( empty( $post_thumbnail ) ) {
update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '56' );
}
}
}
WordPressのアイキャッチ画像に任意のデフォルト画像を登録する方法をご紹介します。クライアントワークでも使えると思います。−kachibito.netさまより引用実行結果
無事、期待通りの結果になりました!続いてなぜこうなるのか?を追っていきます。コードの仕組み
投稿のアイキャッチにデフォルトの画像を設定する仕組み
しばらく書いていませんでしたが、WordPressテーマの作成を続けています。
この投稿では、作成したindex.phpを振り返りながら、ループやWordPressの関数についてメモをしておきたいと思います。
まずはコードを貼り付けます。(前回からだいぶ変わりました。)
ループの役割
WordPressでは「ループ」という単語がよく使われています。
(3行目:<?php if(have_posts()):?><?php while(have_posts()):the_post();?>)
これがあることによって、クエリに応じた各種の情報がデータベースからページ内に取り込まれて、記事の表示ができるようになります。
また、ループでは一つ一つのページに含まれる情報が多次元配列によってページごとの配列で返ってくるので、例えばarchive.phpなんかでは、foreachを使ってページごとにカテゴリ情報を吐き出して表示することができたりします。
この辺り、想像しただけでコアの作成は大変なんだろうなと思いますね。
WordPressには便利な関数が色々用意されていますが、ループの中でしか使えない関数というのも多くあるので注意しておきたいところです。
ちょっと変なところでループを始めてる理由
多くのテーマでは、header.phpにheaderが書かれていて、各テンプレートファイルにループが書かれているのですが、今回そうしませんでした。
headerって、そのページやセクションが何者であるのか?を簡潔に提示すべき場所なんじゃないかなあと思っていて、タイトルとしてのH1、カテゴリ系のナビ、抜粋、サムネイルを入れています。
その中で抜粋を表示する the_excerpt( ) ; がループの中でしか使えなかった。
そういうわけでheaderの中でループが始まって始まっています。
管理コストは上がるんですが、自分で使うだけなのでいいかなと。
header.phpの中で別にループさせてもやりたいことはできていましたが、それもなんだか気持ち悪くてこの形に落ち着きました。
ヘッダーの現状
サムネイルをフルサイズで出力して、かつpositionでheaderの裏に回して、グラデーションを効かせて、タイトル、抜粋、カテゴリ系のナビ。結構気に入っています。
We Project9月の振り返り
WordPressのテーマを作る中で、HTMLと文書構造とか色々と悩んでしまって手が止まっていたこともあり、1ヶ月ぶりの更新となりました。ひとまず9月の振り返りをします。10月も終わるじゃないか!という時期ではありますが。
WeProject 9月にあったこと
さいたまDTPデザイン勉強会に参加しました
9月2日に開催された、さいたまDTPデザイン勉強会に参加しました。
デザインは素人もいいところなのですが、やはりこれからはデザインも多少わかっていないと仕事に差し支えるなと思うところです。
デザイナーが基本とする原則をこちらがわかっていればコードを書くのもスムーズになるでしょうし、何よりできる仕事の幅が広がるのはいいこと。
WordCampTokyoに参加しました
9月16日、WordCampTokyoに参加しました。多くのセッションを聞いて非常に刺激を受けたことにより、その後更新頻度が劇上がりしました。しかしWordPressテーマ制作の過程で文書構造に悩まされ、更新がストップ。
勉強時間の記録
9月はイベントが参加があったため、それなりに勉強時間を取れていたと思いきやそうでもなかった。約25時間。一応月間目標は35時間なので、10時間のマイナス。イベントも時間にカウントしてしまいたい!けど我慢。
Activity Type | Duration | Percent |
---|---|---|
Total | 719:59 | 100.0% |
勉強 | 18:30 | 2.6 |
読書 | 02:01 | 0.3 |
PHP | 06:52 | 1.0 |
Python | 01:07 | 0.2 |
Git | 00:30 | 0.1 |
WordPressテーマ作成 | 07:59 | 1.1 |
BLOG | 06:39 | 0.9 |
今年の自主勉強時間は9月までで約178時間。やばい目標に対して160時間足りない。
archive.phpの作成|WordPressテーマの作り方
r珍しく二本更新します。今回はarchive.phpを作成します。archive.phpはカテゴリーやタグなどのリンクをクリックされた時に呼び出されるテンプレートです。
多くは、タイトル、カテゴリー、タグ、投稿日、、アイキャッチ画像、記事の抜粋が表示されます。記事の一覧ページといえばわかりやすいでしょうか?
とはいえ、先日までに作成したindex.phpとほぼ変わりません。
コード
アイキャッチの有効化と表示
見た通りほとんどはindex.phpと同様なのですが、index.phpから追加、変更された部分として20~26行目の内容があります。
post_tumbnails関数で表示をコントロールする
まず、post_thumb_nailはアイキャッチ画像と呼ばれる画像に関わるものです。記事一覧のページを開くと、そのページを象徴するような画像が表示されていることが多いですが、そういった画像のことをアイキャッチ画像と言います。
アイキャッチ画像は記事の投稿画面から設定可能になるのですが、初期状態ではその機能がオフになっているため、functions.phpに以下のコードを挿入する必要があります。
add_theme_suportでアイキャッチを有効化
theme suportはWordPressであらかじめ用意されている各種の機能を利用するための関数で、今回利用したpost-thumbnails以外にもカスタムヘッダーなどのいくつかの機能があります。詳しくはCodexにて。
関数リファレンス/add theme support - WordPress Codex 日本語版
アイキャッチを有効化することで、記事作成画面で以下のエリアが表示されるようになりました。わぷーかわいい。
excerptで抜粋文を表示する
26行目は、index.phpでthe_contentが書かれていた代わりにexcerptを書きました。記事一覧画面ですので、全文表示をしてしまっては何かを探しているユーザーのみなさんにとっては不親切、、ということで抜粋文を表示することにしました。
テンプレートタグ/the excerpt - WordPress Codex 日本語版
文字数や、デフォルトで[...]となっている部分を変更可能になっています。
次回はページ送りを搭載していきたいと思います。
カテゴリ、タグ、投稿日を表示する|WordPressテーマの作り方
今日はHTML5カンファレンスですね。Webエンジニアを目指す身としては是非とも行きたいところでしたが、今月は色々イベントに参加していて、自粛致しました。来年はどうだろう?
投稿の基本情報を表示する
さて先日までで最低限、投稿内容とメニューが表示されるようになりましたが、今回は投稿の各種情報を表示させる機能を追加します。
各種の情報とは、投稿日、カテゴリー、タグの三つです。
コード
処理内容のメモ(リンクはCodexです。)
2,3行目のget_the_category、get_the_tagsでそれぞれの情報を取得して、変数に代入。
ifと!emptyにて、値がからかどうか?で条件判定を行なったのちに、foreachにて変数の中身をそれぞれに代入して展開。
今回はそれぞれ別のulにて用意をしました。