WEBEER – Web制作の覚えがき –

【WordPress】カスタマイザーの画像登録でALTを取得したい,アタッチメントIDを登録したい

WordPress
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];

意外と簡単にできましたね。