カスタムフィールドを使ってページの表示を変える
コンテンツ引越し作業もいよいよ大詰め。自宅録音作品のコンテンツの移設に取り掛かった。
これらの「投稿」には以下のカスタムフィールドを設定している。
- 実ファイル(.movや.mp3)の名称
- アーティスト名
- 作詞、作曲者名
- 版権情報(© ****年・版権所有団体名)
もちろんこういったもの全てを各投稿本文に仕込むこともできる。ここであえてカスタムフィールドを持ち出しているのは主に「実ファイル」に関する事情のためだ。
楽曲のデータは現時点でもおよそ600MB。レンタルサーバーとは別のサーバーに格納している。昔はレンタルサーバーの容量が今ほど潤沢ではなかったのでこれくらいマスがあるファイル群は別のサーバーに置かざるを得なかったのだ。容量、速度の両面でサーバーが適切なのか…いまだによくわからない。それにそんなにあちこちのサーバーを借りれるほどお金もないし。実際には数個の選択肢しかないのだが。
で、各々の投稿にこのURLを逐一記載してしまうと、何かの事情でファイルの移設を余儀なくされた時に200以上に及ぶページを全部修正しなければならなくなってしまうのだ。
そこでカスタムフィールドを使って「ファイル名」だけを格納しておき、ページテンプレートで格納サーバーのURLを書いておく。これなら万一「移設」という事態になってもこのテンプレート1つ書き換えれば済んでしまう。レイアウトやスタイルを揃えたりする上でも本文とは分けておいた方が何かと扱いやすいのだ。
そんなわけでMTでサイトを作っていた時代からカスタムフィールドを使っていた。WPに移行した時はうまく持って来れなくて結局全部組みなおしたが、今回はただのバージョンアップなのでエクスポート→インポートで問題なく持ってこれた。
で、実際にやりたいことは「楽曲データを含む投稿の時は本文の前にプレーヤーと版権情報を表示させる」ということだ。
具体的には以下のようにする。
- 投稿にカスタムフィールドを仕込む(名前、値ともにあくまで「例」。実際は何でも良い)
名前 値 AudioFile sample.mp3 Artist Great Band Credit Mr. Composer Copyright Best Music Ltd. - テンプレート・フォルダの中にあるsingle.phpを開き、下記コードを挿入したい場所に記入する。今回はテーマ”Arras”のアイキャッチ画像の下に入れたかったので、single.phpの16行目あたりにある<?php arras_postheader() ?>の直下に追加した。
1234567891011121314<?php if(get_post_meta($post->ID,'AudioFile',true)): ?><center><OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="600"HEIGHT="16" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"><PARAM name="SRC" VALUE="http://(実ファイルがあるサーバーのURL)/<?php echo post_custom('AudioFile'); ?>"><PARAM name="AUTOPLAY" VALUE="true"><PARAM name="KIOSKMODE" VALUE="true"><EMBED SRC="http://(実ファイルがあるサーバーのURL)/<?php echo post_custom('AudioFile'); ?>" TYPE="video/quicktime" WIDTH="600" HEIGHT="16" AUTOPLAY="true" KIOSKMODE="true" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED></OBJECT><br><b><?php echo post_custom('Artist'); ?></b><br><small><?php echo post_custom('Credit'); ?><br><?php echo post_custom('Copyright'); ?></small><br></center><?php endif; ?>- <?php if(get_post_meta($post->ID,’AudioFile’,true)): ?>で条件分岐開始。ここでは’AudioFile’というフィールドに値が入っている場合の処理
- カスタムフィールドの値を表示するには<?php echo post_custom(‘フィールド名’); ?>というタグを使う
- 構文の最後は<?php endif; ?>で閉じる
- <oblect>を定義しないとIE, iPadでプレーヤーが正しく表示されない
- <embed>を定義しないとFireFoxでプレーヤーが表示されない
- <embed>内で”type=movie/quicktime”を定義しないとFireFoxでプラスイン・エラーを起こす
以上で目論見通りオーディオプレーヤーが個別ベージに表示されるようになった。

Tweet
























