[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]

とすれば、削除されます。
この記事も参考になります。

favicon
DropCatch.com http://webdesignrecipes.com/how-to-customize-wordpress-gallery/

物草 灸太郎
物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

Loading...

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。