【WordPress Advent Calendar 2012 2nd day】はじめてのWordPressカスタマイズ(PHP・テンプレートタグの優しい解説) #wacja2012

WordPress Advent Calendar2012」に初参加です。二日目の記事。

WordPressの最近の動向や、難しいことは他の方が紹介してくださると思うので、私は初心者でも分かるWordPressのテーマを作成・カスタマイズする上でよく使うPHPの関数やWordPress独自のテンプレートタグのをしようかと思います。

HTMLとCSSがある程度わかっている方が対象です。

PHPのお約束

  • PHPのプログラムはで終わります(?は半角にしてね)。
  • 処理の最後に半角セミコロン「;」を付けます。
  • ループ文を書く際は慎重に。無限ループしちゃったり((((;゚Д゚))))ガクガクブルブル

よく使うPHPの関数

echo

文字列を表示するために使う関数です。文章だけでなくHTMLのタグも文字列に含まれます。

使い方)
echo ‘文字列’;

ex)
プログラム(はろーわーるどと表示する。)

echo 'はろーわーるど;

 

演算子

関数ではありませんがよく使うので解説。下に上げたもの以外にも演算子はあるので調べてみてください。

$a + $b             // $aに$bを足す。
$a - $b             // $aから$bを引く。
$a * $b             // $aに$bを掛ける。
$a / $b             // $aを$bで割った時の商。
$a % $b             // $aを$bで割った時の余り。

$a = $b             // $aに$bを代入する。

$a == $b            // $aと$bが等しいとtrue。
$a != $b            // $aと$bが等しくないとtrue。
$a > $b             // $aが$bより大きいとtrue。
$a =< $b            // $aが$b以下だとtrue。

$i++                // $iに1を足して$iに代入。(「$i= $i+1」と同じ意味)

!$a             // 条件$aではない時にtrue。
$a && $b ($a and $b)        // 条件$aと条件$bのどちらも満たすとtrue。
$a || $b ($a or $b)     // 条件$aか条件$bのどちらかを満たしていればtrue。

$a . $b             // $aと$bをつなげる

 

if elseif else

「もし~ならば」という条件で分岐させるための関数です。分岐を増やしたい場合は elseif を増やして上げればOKです。

使い方)
if ( 条件文A ) { Aの場合の処理 }
elseif ( 条件文B ) { Bの場合の処理 }
else { 上記以外の場合の処理 }

もしくは

if ( 条件文A ) : Aの場合の処理
elseif ( 条件文B ) : Bの場合の処理
else : 上記以外の場合の処理
endif;

ex)
プログラム(1~10の間でランダムで選んだ数がどの範囲にあるのかを表示)

$i = rand(1,10);    // $iという変数に1~10の間でランダムに数字を代入。
if ( $i <= 3 ) { echo $i.'は3以下です'; }
elseif ( $i > 3 && $i <= 6 ) { echo $i.'は3より大きく6以下です。' }
elseif ( $i > 6 && $i <= 9 ) { echo $i.'は6より大きく9以下です。' }
else { echo $i.'は10です。'; }

 

while

条件文を満たしている間、繰り返し(ループ)処理を行わせるための関数です。

使い方)
while ( 条件文 ) { 実行したい処理 }
もしくは
while ( 条件文 ) : 実行したい処理
endwhile;

ex)
プログラム(0~9までの数字を表示)

$i = 0;         // $iに0を代入。
while ( $i < 10 ) { // $iが10より小さい間繰り返す。
    echo $i;    // $iを表示。
    $i++;       // $iに1を足して$iに代入。
}

 

WordPressのテンプレートタグのお約束

  • テンプレートタグはWordPress独自に作成されたPHPの関数なのででくくりましょう(?は半角ね)。
  • 基本は公式Codexに掲載されています。
  • Codexでもわからなければ、Google先生に聞くか、公式フォーラムや、WordPress Advent Calendarに参加している方々に聞いてみましょう。皆さん親切ですので、教えてくださると思います。(無礼なのはダメよ)

 

よく使うテンプレートタグ

bloginfo()

サイトのタイトルとか、ディスクリプションとか、URLとかを表示してくれる非常に便利なタグです。aタグのhrefやimgタグのsrcなどによく使います。

使い方)

bloginfo('url');        // サイトのURL
bloginfo('name');       // 管理画面で設定したサイトのタイトル
bloginfo('description')     // 管理画面で設定したサイトの概要
bloginfo('template_url')    // 使っているテンプレートのURL
bloginfo('stylesheet_url')  // 使っているメインのスタイルシートのURL
bloginfo('template_directory')  // 使っているテンプレートのディレクトリのURL

 

have_posts() the_post()

投稿データが有るときにデータをロードするのに使います。使い方にあるようにifとwhileを組み合わせてよく使います。これを使えば記事の一覧表示とかができるんですね。セットで覚えておくといい感じです。

使い方)

if (have_posts()) :             // もし投稿があったら
    while (have_posts()) : the_post();  // 次の投稿が無くなるまで投稿データをロードする。
    endwhile;
endif;
/* 何も設定しないと管理画面で設定した投稿表示件数分繰り返します。
もちろんページごとに件数や条件を変えることもできます。*/

 

the_title()

投稿やページのタイトルを表示するのに使います。固定ページテンプレート(page.php)や投稿テンプレート(single.php)なんかによく使います。投稿をロードしているループの中でしか使えません。

使い方)

the_title();                // 単純にタイトルだけ表示
the_title('

','

'); // タイトルの前後に

タグを付けて表示

 

the_permalink()

今いるページや投稿のURLを出力してくれます。固定ページテンプレート(page.php)や投稿テンプレート(single.php)なんかによく使います。投稿をロードしているループの中でしか使えません。

使い方)

the_permalink();        // 投稿のパーマリンク(URL)を表示

 

the_content()

投稿の内容を全文表示します。これも投稿をロードしているループの中でしか使えません。

使い方)

the_content();          // 内容の全文表示
/* 投稿内にと入れておくとその部分で表示を切ることができます。
切った場合はデフォルトだと(more...)と記事へのリンクが付きます */
the_content('続きを読む');   // こうすると(more...)が「続きを読む」に変わります。

 

the_excerpt()

投稿の抜粋表示です。投稿画面で抜粋を設定してあればそれが優先され、設定されていなければデフォルトで110文字が表示されます。

使い方)

the_excerpt();          // 内容の抜粋表示

 

ループのサンプルプログラム

上の説明だけじゃよくわからないと思うので、ループのサンプルを見てみましょう。こんな感じで使います。実行例はこのサイトのアーカイブ(カテゴリ)表示を見てください。

プログラム)


        

// aタグに投稿のパーマリンクをセット // タイトルを表示

// 内容を全文表示
/* the_content(); の部分を the_excerpt(); に変えれば抜粋表示になります。 */

 

終わりに

結構長くなってしまいまいしたが、これだけでも知っていれば簡単なテーマの作成やカスタマイズができるんじゃないかと思います。紹介したのはあくまで序の口。PHPにもWordPressにも非常に便利な関数がたくさん用意されています。
これをきっかけに初心者から一歩進んだWordPress使いになってみましょう。
私もムチャぶりに((((;゚Д゚))))ガクガクブルブルしながら日々精進です。

 

WordPress Advent Calendar 2012

前日(12/1)
・高橋大輔さん
【WordPress Advent Calendar 2012 1st day】僕とパソコンとWordPressと。 #wacja2012
・渡邉ぎいちさん
新しく生まれ変わるゆるゆるカフェにご期待ください

今日(12/02)
・高野直子さん
WordPress テーマ開発4つのアプローチ #wacja2012

明日(12/03)
・藤田無憂さん
WordPressの条件分岐をもちょっと便利にする関数作ったよ #wacja2012
・大曲仁さん
WordPress を扱う上で憶えておいて欲しい3つのesc #wacja2012

 

この記事を書いた人

たぬき@首席技監

アーシタンと蔵守の技術周り担当。主にワードプレス(WordPress)、サーバ管理なんかをやっています。