「webで何か」作るブログ

35歳という遅すぎるスタートをなんとかする為のブログです。基本的に自分にとっての役立ちメモ。

投稿のアイキャッチにデフォルトの画像を設定する仕組み

 しばらく書いていませんでしたが、WordPressテーマの作成を続けています。

この投稿では、作成したindex.phpを振り返りながら、ループやWordPressの関数についてメモをしておきたいと思います。

まずはコードを貼り付けます。(前回からだいぶ変わりました。)

index.php

ループの役割

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の中で別にループさせてもやりたいことはできていましたが、それもなんだか気持ち悪くてこの形に落ち着きました。

ヘッダーの現状

f:id:pochiweb:20171103104121p:plain

サムネイルをフルサイズで出力して、かつpositionでheaderの裏に回して、グラデーションを効かせて、タイトル、抜粋、カテゴリ系のナビ。結構気に入っています。