カスタムフィールドとライトボックス

ここ二週間くらいで久し振りにしっかりWordPressに触ったので、今回覚えたことメモ。

カスタムフィールドの画像をライトボックスで表示したい

使ったプラグインはカスタムフィールドテンプレートWP Lightbox 2

まず、カスタムフィールドテンプレートでtype = fileというファイルアップロード用の枠を作ったのだけど、それをそのまま画像として吐き出すと、上げたままの画像が表示されるだけで、サムネイル表示も出来ない。

次に、画像アップロードの枠をtype = textareaにしてみる。
これはこのサイトのライブアーカイブページでも使ってる方法で、エントリー本文と同じようにWordPressのシステムに則ったサムネイル表示ができるようになる。

けど、このサイトもだけど、それだとなぜかライトボックスが適用されなくて、ただのリンクになってしまうのです。
いちいち画像に飛ぶのもめんどくさいし、どうしてもライトボックスで表示したい。
且つ、あまり詳しくない人でもいじれるように、カスタムフィールドも使いたい。

なんでライトボックスが適用されないのか

詳しくはわからなかったのだけど、ライトボックス系のプラグインが適用されるのはエントリー本文のみというのを見かけた。
完全に私の予想だけど、カスタムフィールドって直接テンプレートにフィールド内に書いた文字なりを吐き出しちゃうから、Aタグの中にライトボックス用のタグを埋め込むことができないんだと思う。relとかいうやつね。
どうすれば埋め込まれるようになるんだろう。
本文としてカスタムフィールドを吐き出すことはできないんだろうか?

そう言えば、このサイトでは[cft format=0]ってショートコードを入れることで、カスタムフィールドを本文として吐き出しているブログがある。
worksとかまさにそうなんだけど。
ただ、詳しくない人に引き渡すというのに、「毎回本文にショートコード書いてくださいね」とは言いたくない。

とは言っても、やっぱり本文じゃないと変換できないんだろうし……。

変換できないなら自分で書いてやれば良いのでは

煮詰まって一晩寝て、思いつきました。
画像のURLだけ取得して、AタグもIMGタグもテンプレートに書いちゃえば良いのでは。テンプレートでAタグの中にrelを入れてしまえば、ライトボックスで表示されるはず。

カスタムフィールドでファイルをアップすると、フィールドが吐き出すのはファイルのID。そこから画像のURLを取得するのは、ググればすぐに分かることでしょう。
ということで、以下ですよ。

<?php
$files = get_post_meta($post->ID, カスタムフィールドのID, false);
foreach($files as $file){
	$file = wp_get_attachment_url($file);
	echo $file;
}
?>

これで画像のURLが取得できる。

で、実際に使ったのが以下。

<a href="<?php
$files = get_post_meta($post->ID, Image02, false);
foreach($files as $file){
	$file = wp_get_attachment_url($file);
	echo $file;
}
?>" rel="lightbox"><img src="<?php
$files = get_post_meta($post->ID, Image02, false);
foreach($files as $file){
	$file = wp_get_attachment_url($file);
	echo $file;
}
?>" /></a>

AとIMGに入ってるのはどちらも同じ、IDから取得した画像のURL。で、Aにはライトボックスの為に予めrelを入れてあります。

これでできたー!

おわりに

これができたことによって、このサイトの変な作りも色々わかってしまいました。
ライブのページでライトボックス効いてないのも解決しますね……。
それと、画像用のタグがずらっと長いので、4枚も画像を使うとソースがずらっと長くなってしまい……。
できればこれをショートコードですっきりとまとめると良いのかも知れない。
それはまあ、また今度考えます。


音楽のアップロード

どう表示されるのでしょうか


独自ドメイン!

なんとこのサイト、独自ドメインを取得いたしましたー。
「独自ドメインとっちゃいなよ!」という友人の軽い言葉に乗ってみたところ、とーっても面倒だったのでまたこういう機会が訪れた時の為に以下にメモしておくこととします。

続きを読む…


WordPressの更新と変なエラー

WordPressを最新版に更新したところ、右側の新着エントリーのところに変なエラー表示が出るようになりまして……。
しかし、私のような詳しくない人間には何が原因なのかよくわかりませんでして……。

今、仕事があまりに暇なのでエラーの内容をググって見たところ
こちらの記事にたどり着きました。
なるほどよくわからん。
が、簡単そうなwp-config(ロリポの改ざん事件でパーミッションを変えられたあいつ。最初アップロードできなくて何事かと思った)に追記っていう方をやってみました。
見事エラーは出なくなりました。
やったー!


Lightbox2

結構前からなんですが、ライトボックスがちゃんと動いてないなぁ…というのに、気づいてはいたんです。
リサイズしている画像クリックすると、単に画像そのもののURLに飛んでしまうというね。
でも、いつからこうなったのかわからないし、何が原因なのかわからないし…と思って放置してしまっていたのですが。
やっぱ気になるなぁ(´・ω・`)と思って、今思い切って調べてみました。

WordPress Lightboxが動作しない
具体的に何が悪かったのかはわからないですが、こちらを参考にして修正してみました。
ちゃんと動くようになりました(`・ω・´)

どうやら、何かのプラグインを入れたタイミングで、こちらで解説されているように競合してしまっていたのでしょう…。
そう言えば、ちょっと前にDIVをまるっとリンクに出来るjquery入れてみたので、それとか怪しいかもしれないですね。

取り敢えず解決してよかったです。
なんかしらんけど競合して見れなくなる、という事象が発生することは覚えました。ぼんやりと。


色々追加したお知らせ

お知らせ!①

Worksにイラストを追加してみました。
背景のグリッドはこちらからお借りしています。
この企画に則って、毎日書けたらいいな…。
そして、絵が上手になるといいな…。
生まれ持ったセンスはどうにもならないとしても、ある程度はきっとコツで上手くなれるはずだ…それにはいっぱい書くことだ…。
という気持ちで頑張ります。
夫も書いているので、負けないように頑張ります!
帰りが早い私に分があるしな!

そう言えば、絵書くにあたって大変久し振りにペンタブレットを使ったのですが。
高校生の時に、Windowsで使う為に買ったものだったのですが…。
もう10年も前のものなのに、今のMacでも使えた!すごい!
同じ時期に買ったスキャナはOS10.3だかなんかまでしか対応してなくて使えなかったのですが…。
ペンタブ凄い!WACOM凄い!!
ちょっと夫の持ってる最新みたいなやつが羨ましくないと言えば嘘になりますけど、10年も一緒にいると愛着も湧きますよね。
たまに変な挙動するけど、許す!

お知らせ!②

ロシアグループの過去のライブをアーカイブするページを作成しました。
TOPにあるNewsの部分にはこれからやるライブの情報を、こっちには過去のライブを写真や動画を交えて掲載しようと思います。

ブログの作りとしては、カスタムフィールドを使っていて、エントリー一覧では写真と日付等のちょっとした情報だけ表示して、詳細ページで全ての情報が見れる、という、「今日のぎんなん」に近いものになっています。
が、「今日のぎんなん」はエントリーに一枚しか画像がないのに対して、こっちは最大4枚アップできるようにしたので、エントリーに含まれる画像を表示させる、というコードが使えなくて、新たに探して、記事に含まれる、一枚目の画像だけを表示してくれるコードを見つけました。
こちらを参照させていただきました!

あと、「今日のぎんなん」はカスタムフィールドの全項目必須項目なので、フィールドが空くことってないんですけど。
ライブのページは、画像が毎回4枚あるかもわからないし、動画なんてもしかしたら無い時の方が多いかもしれない…。
ということは、ある場合だけ表示させる…というソースにしないと、綺麗に表示されなくなってしまう…。
というのがあったので、

<?php if ( post_custom('Movie')): ?>
<div class="russiaEntryMovie">
<?php echo post_custom('Movie'); ?>
</div>
<?php endif; ?>

これで、もしムービーがあれば、ムービーが収まってるdivごと表示する。なければ、divも表示しないようにしました。
プラグインのお陰で、普通は本文にカスタムフィールド用のタグ入れればテンプレートでは本文読み込むタグ入れるだけでカスタムフィールドの内容が表示できたのですが。
それが使えず(使えるのかも知れないけど私にはわからなかった)テンプレートに直接書いてます。
これ、テーマ変えよう!とかなったらちょっとめんどくさいよなぁ…とか。
思うので、多分本当はプラグイン側でなんかできるんだと思います。思いますよねー。
そのうち、忘れなかったらちょっと調整してみたりしようと思います。