[WordPress] メディアにカスタムフィールドを追加して、captionショートコード呼び出しの際に処理させる(メモ)


参考サイト:
メディア(画像)にカスタムフィールドを追加する方法です。メディアと言っても、「attachment」というカスタム投稿の1つであると考えれば臆することも無いです。
http://yahss.net/wordpress/955-curstom-field-on-media-uploader/

メディア(画像)を表示させる際に実行されるフックが見当たらなかったので(本文には直書きされているからそれもそうか)、キャプションを追加する際にショートコードで処理させるので、その際に一緒にカスタムフィールドの中身を表示させることにしました。
http://msn100.org/code/caption_html.html
上記記事を参考に、wp-include/media.phpの中からcaptionショートコードに関する箇所を取り出して、functions.phpに名前を変えて保存します。

キャプションのショートコードを処理する際に、どうやって投稿のIDを取り出すのが簡単かな、と思いましたが、キャプションショートコードを追加すると自動で「id=”atacchment_***”」というアトリビュートが追加されるので、

$media_id = preg_replace("/[^0-9]+/", "", $atts['id']);

としてやれば、IDだけを取り出せるので、後はこのID経由でカスタムフィールドの中身を取り出してやればOKです。

ただ、何となく処理が重たくなった気がするので、その辺を改善しないといけないかな、と思います。media.phpの中にあるキャプションショートコードの処理を停止させる必要があるかもしれません。

追記:
ショートコードを削除する際は、functions.phpに

remove_shortcode('wp_caption', 'img_caption_shortcode');
remove_shortcode('caption', 'img_caption_shortcode');

とすれば、削除されます。
この記事も参考になります。
http://webdesignrecipes.com/how-to-customize-wordpress-gallery/



物草灸太郎

怠けたい。

コメントを残す