[WordPress] メディアにカスタムフィールドを追加して、captionショートコード呼び出しの際に処理させる(メモ)
参考サイト:
メディア(画像)にカスタムフィールドを追加する方法です。メディアと言っても、「attachment」というカスタム投稿の1つであると考えれば臆することも無いです。
メディアを挿入/編集 でアップロードした画像(メディア)のために、 「タイトル」「キャプション」「代替テキスト…
メディア(画像)を表示させる際に実行されるフックが見当たらなかったので(本文には直書きされているからそれもそうか)、キャプションを追加する際にショートコードで処理させるので、その際に一緒にカスタムフィールドの中身を表示させることにしました。
画像キャプション回りのHTMLタグをカスタマイズする上記記事を参考に、wp-include/media.phpの中からcaptionショートコードに関する箇所を取り出して、functions.phpに名前を変えて保存します。
キャプションのショートコードを処理する際に、どうやって投稿のIDを取り出すのが簡単かな、と思いましたが、キャプションショートコードを追加すると自動で「id="atacchment_***"」というアトリビュートが追加されるので、[php]$media_id = preg_replace("/[^0-9]+/", "", $atts['id']);[/php]としてやれば、IDだけを取り出せるので、後はこのID経由でカスタムフィールドの中身を取り出してやればOKです。
ただ、何となく処理が重たくなった気がするので、その辺を改善しないといけないかな、と思います。media.phpの中にあるキャプションショートコードの処理を停止させる必要があるかもしれません。
追記:
ショートコードを削除する際は、functions.phpに[php]remove_shortcode('wp_caption', 'img_caption_shortcode');
remove_shortcode('caption', 'img_caption_shortcode');[/php]
とすれば、削除されます。
この記事も参考になります。
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
コメントをどうぞ