[WordPress] メディアにカスタムフィールドを追加して、captionショートコード呼び出しの際に処理させる(メモ)
参考サイト:
メディア(画像)にカスタムフィールドを追加する方法です。メディアと言っても、「attachment」というカスタム投稿の1つであると考えれば臆することも無いです。
メディアを挿入/編集 でアップロードした画像(メディア)のために、 「タイトル」「キャプション」「代替テキスト…
メディア(画像)を表示させる際に実行されるフックが見当たらなかったので(本文には直書きされているからそれもそうか)、キャプションを追加する際にショートコードで処理させるので、その際に一緒にカスタムフィールドの中身を表示させることにしました。
画像にキャプションを入れると、WordPressは画像タグをタグで囲み、キャプションをタグで囲んで、それらをでくくって、さらにstyle属性で「画像+10px […]
キャプションのショートコードを処理する際に、どうやって投稿の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]
とすれば、削除されます。
この記事も参考になります。
![物草 灸太郎](https://monoxa.net/wp-content/uploads/character-200x213.png)
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
コメントをどうぞ