カテゴリー
WordPress

【WordPress】ヘッダー画像を簡単に何十個でも登録する方法♪【PHP】【テーマのカスタマイズ!】

【WordPress】Twenty Fifteen の子テーマを作った記録! | oki2a24 で functions.php に次を追加しました。

2〜3個ならば手作業でヘッダーファイルをプログラムの中に記述しますけれども、数十個分も繰り返したくはありません><。

そこで、

  1. ファイル名のリストを用意しておき、
  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'
            ),
        $

予定通り、出力されました♪ただ、最初の繰り返し部分の行頭スペースと、最後の繰り返し出力時の改行スペースが不格好ですわね><。次回の課題ですの。

おわりに

同じことを、以前行いました。

ただ、この時は子テーマではございませんでしたので、テーマまでのパスは %s でありました。そのことを忘れて functions.php に組み込んだ時に、どうして動かないのかしら!><と少しおよよよよ、と慌ててしまいました、てへ♪

今回、PHP を実行できる環境を求めて少し考えましたけれども、今考えてみますと JavaScript で書けば PC のウェブブラウザであれば、どんな OS でも選ぶ必要なく実行できますわね!

次はそうしようと存じます。次の、Twenty Sixteen の時には!

以上です。

コメントを残す