【WordPress】Twenty Fifteen の子テーマを作った記録! | oki2a24 で functions.php に次を追加しました。
- functions.php に、ヘッダー画像をテーマに組み込むプログラムを追加
- Function Reference/register default headers « WordPress Codex
- ヘッダー画像は数十個ある
2〜3個ならば手作業でヘッダーファイルをプログラムの中に記述しますけれども、数十個分も繰り返したくはありません><。
そこで、
- ファイル名のリストを用意しておき、
- 繰り返し部分にファイル名をはめ込んで表示し、
- これらをファイル数分繰り返す
というプログラムを組んで自動的に functions.php のヘッダーファイルを指定する部分を作りました♪なお、環境は Mac でございます。
プログラムの簡単な概要・仕様
- 配列にファイル名を入れておく。個々のファイル名は xxxxxxx.jpg というフォーマットだったので、XXXXXXXX を配列に入れるようにした。.jpg は配列に入れなかった。
- foreach を使って配列からファイル名を取り出し、処理をする
- 繰り返し部分、$template は次のソース。
- 行頭のスペースや改行も出力したいため、半角スペースや改行を入れている。読みやすくすることが目的ではない。
- 3箇所の $filename にファイル名が入る。
- ダブルクォーテーション「”」で囲っているため、$filename はテンプレートの中で使用可能
- 子テーマまでのパスとして %2$s を指定する必要がある。なお、子テーマでないなら、%s でよい。本家ドキュメントを参考に → Function Reference/register default headers « WordPress Codex
- $ はバックスラッシュ「\」でエスケープする必要がある(日本語環境では円記号となる場合もある)。
$template = " '$filename' => array( 'url' => '%2\$s/images/headers/$filename.jpg', 'thumbnail_url' => '%2\$s/images/headers/$filename-thumbnail.jpg', 'description' => '$filename' ), ";
- $template に上記文字列を入れたら、echo で出力する。
実際に書いた PHP プログラムがこちらになります♪
プログラムよりも、ファイル名をどうやってコピペしようかと、そちらに苦労いたしました><。Mac のディレクトリにヘッダーファイルが何十個と入った状態で、次のコマンドでファイル名の一覧を得ることができました!
このコマンドのポイントは、「-1」オプションで1行に1ファイルを表示する、ということですの!
ls -1
Windows であれば、コマンドプロンプトで「dir /b」コマンドですわね♪
さて、それではこちらが完成したプログラムですの♪
<?php $filenames = array( 'P1010303', 'P1010304', 'P1013020', 'P1020313', 'P1020317', 'P1053151', 'P1063299', 'P1063327', 'P1083513', 'P1083518', 'P1123779', 'P7142886', 'P7243816', 'P7284113', 'P7284115', 'P7314485', 'P7317055', 'P7317068', 'P8047211', 'P8075118', 'P8233218', 'P8253275', 'PC282825', 'PC282829', 'PC292720', 'PC292722', 'PC292730', 'PC292732', 'PC292863', 'PC302759', 'PC302808', 'PC302860', 'PC302865', 'PC302868', 'PC310256', 'PC310257', 'PC312872', 'PC312874', 'PC312970', 'PC312973', 'PC312989', 'PC312990', 'PC313028', 'PC313029', 'R0012231', 'R0013059', 'R0013152', 'R0013318', 'R0014340', 'R0014342', 'R0014366', 'R0014391', 'R0016628', 'R0016722', 'R0016798', 'V4010034' ); // 変数の数分だけ繰り返す foreach ($filenames as $filename) { // テンプレートに変数を代入 $template = " '$filename' => array( 'url' => '%2\$s/images/headers/$filename.jpg', 'thumbnail_url' => '%2\$s/images/headers/$filename-thumbnail.jpg', 'description' => '$filename' ), "; // テンプレートを出力 echo $template; }
実際に PHP プログラムを動かすと…
最初は WordPress を入れている、このブログを入れているサーバで実行しようと思ったのですけれども、もっとお手軽にできないかしら?とちょっと考えてみました。
Mac でできますわね♪たしか Mac には PHP が入っておりますもの♪
ということで、ターミナル(アプリケーション > ユーティリティ)を立ち上げてます。
まずは PHP が入っていることを確認いたしましょうか!
$ php -v PHP 5.5.14 (cli) (built: Sep 9 2014 19:09:25) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies $
うん!はいっておりますわね♪では早速、実行いたしましょう♪
$ php file.php 'P1010303' => array( 'url' => '%2$s/images/headers/P1010303.jpg', 'thumbnail_url' => '%2$s/images/headers/P1010303-thumbnail.jpg', 'description' => 'P1010303' ), 'P1010304' => array( 'url' => '%2$s/images/headers/P1010304.jpg', 'thumbnail_url' => '%2$s/images/headers/P1010304-thumbnail.jpg', 'description' => 'P1010304' ), … 略 … 'V4010034' => array( 'url' => '%2$s/images/headers/V4010034.jpg', 'thumbnail_url' => '%2$s/images/headers/V4010034-thumbnail.jpg', 'description' => 'V4010034' ), $
予定通り、出力されました♪ただ、最初の繰り返し部分の行頭スペースと、最後の繰り返し出力時の改行スペースが不格好ですわね><。次回の課題ですの。
おわりに
同じことを、以前行いました。
- WordPress の Twenty Eleven テーマのヘッダー画像を根本的に入れ替えます。「画像をアップロード」からではなく!その1、準備編♪ | oki2a24
- PHP を使って複数行テンプレートからテキストをダーっと作る、お手軽な方法を実践したよ♪ | oki2a24
ただ、この時は子テーマではございませんでしたので、テーマまでのパスは %s でありました。そのことを忘れて functions.php に組み込んだ時に、どうして動かないのかしら!><と少しおよよよよ、と慌ててしまいました、てへ♪
今回、PHP を実行できる環境を求めて少し考えましたけれども、今考えてみますと JavaScript で書けば PC のウェブブラウザであれば、どんな OS でも選ぶ必要なく実行できますわね!
次はそうしようと存じます。次の、Twenty Sixteen の時には!
以上です。