【WordPress】カスタマイザーの画像登録でALTを取得したい,アタッチメントIDを登録したい
WordPress
更新日:2020.09.06 公開日:2020.09.06
WordPressのカスタマイザーで画像を扱うときにWP_Customize_Image_Control
を使うことが多いと思います。
それだとURLしか取得できません。けれど、通常の画像のようにaltやサイズなどの情報を使いたいこともありますよね。
そのためにはアタッチメントIDを登録する必要があります。
カスタマイザーの画像登録でアタッチメントIDを使えるようにする方法を紹介します。
もくじ
やりたいこと
カスタマイザーで登録した画像のaltを取得したい。
コード
まずは全体像。
// カスタマイザーを作る部分
$wp_customize->add_setting( 'sample_image', array(
'default' => '',
'transport' => 'refresh',
));
$wp_customize->add_control(new WP_Customize_Media_Control($wp_customize, 'sample_image', array(
'label' => 'サンプルイメージ',
'section' => 'section_sample',
'settings' => 'sample_image',
'mime_type' => 'image',
)));
//表示する部分
$attachment_id = get_theme_mod( 'sample_image' );
$url = esc_url(wp_get_attachment_url( $attachment_id ));
$alt = get_post_meta( $attachment_id , '_wp_attachment_image_alt')[0];
解説
カスタマイザーを作るときに、WP_Customize_Media_Control
を使います。WP_Customize_Image_Control
と同じ見た目ですがattachment_idが登録されるようになります。
$wp_customize->add_control(new WP_Customize_Media_Control($wp_customize, 'sample_image', ));
get_theme_mod
でカスタマイザーのデータを取得するとattachment_idが取得できます。
$attachment_id = get_theme_mod( 'sample_image' );
あとはいつも通りにURLやaltを取得します。
$url = esc_url(wp_get_attachment_url( $attachment_id ));
$alt = get_post_meta( $attachment_id , '_wp_attachment_image_alt')[0];
意外と簡単にできましたね。
カテゴリー:
WordPress