WordPressで添付画像ファイルを自動表示する関数

WordPressで、投稿に添付されている画像ファイルを自動で表示する関数を作成したので紹介しておきます。

WordPressの投稿ページから添付した画像ファイルは、ギャラリーから直接挿入してもいいのですが、そうすると余計なtitle属性やclass属性が付いてしまいます。Wordpressのアップデートや手動でのマークアップによって、XHTMLのマークアップの一貫性が失われる原因になり、結果としてデータの再利用が困難になる可能性があります。

今回は、メンテナンス性や再利用性を重視したかったため、本文以外はできるだけ自動で出力できるようにと、投稿に添付されている画像ファイルを自動で出力する関数を作成しました。次のような関数をテーマのfunctions.phpなどに追加して利用します。

function theme_the_images() {
    global $post;

    $html = '';

    $images = get_posts(array(
                           'post_parent' => $post->ID,
                           'post_type' => 'attachment',
                           'post_mime_type' => 'image',
                           'orderby' => 'menu_order',
                           'order' => 'ASC',
                           'numberposts' => 999
                       ));

    foreach ($images as $image) {
        $meta = wp_get_attachment_metadata($image->ID);

        $html .= '  <li><img';
        $html .= ' src="' . attribute_escape($image->guid) . '"';
        $html .= ' width="' . intval($meta['width']) . '"';
        $html .= ' height="' . intval($meta['height']) . '"';
        $html .= $image->post_excerpt ? (' alt="' . attribute_escape($image->post_excerpt) . '"')
                                        : '';
        $html .= ' /></li>' . "\n";
    }

    if (!empty($html)) {
        $html = '<ul class="figure">' . "\n"
              . $html
              . '</ul>' . "\n";
    }

    echo $html;
}

この関数は、添付画像ファイルを表示したい投稿のIDをパラメーターにして、テーマのPHPファイルなどから呼びだします。アーカイブページや個別ページなどでは、the_post();以降で$post->IDをパラメーターにして呼びだします。

<?php theme_the_images($post->ID); ?>

関数を呼びだした部分に、指定した投稿に添付されている全ての画像がul要素として出力されます。

今回は原寸サイズで画像を出力しましたが、サムネイルなどを表示したい場合は/wp-includes/media.phpのwp_get_attachment_image()関数などが参考になりそうです(「[WP]Wordpress2.5 サムネイル画像を取得して表示 - WebTecNote」も参照)。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (0)

この記事へのトラックバックはまだありません。

この記事のトラックバックURI
http://dxd8.com/archives/173/trackback/
この記事のURI
http://dxd8.com/archives/173/