posts a, $wpdb->posts p
WHERE a.post_parent = p.ID
AND a.post_mime_type LIKE 'image/%'
AND a.post_type = 'attachment'
AND p.post_status = 'publish'
HERE;
$count = $wpdb->get_var($sql);
// 画像の数から全ページ数を求める
$page_counts = ceil($count / $per_page);
// URLからページ番号を得る
$page_no = intval($wp_query->get('paged'));
if ($page_no < 1) {
$page_no = 1;
}
else if ($page_no > $page_counts) {
$page_no = $page_counts;
}
// オフセットを求める
$offset = ($page_no - 1) * $per_page;
// ページ内の先頭と最後の画像の番号を求める
$page_start = ($page_no - 1) * $per_page + 1;
$page_end = $page_no * $per_page;
if ($page_end > $count) {
$page_end = $count;
}
// 画像を読み込む
$sql = <<< HERE
SELECT a.* FROM $wpdb->posts a, $wpdb->posts p
WHERE a.post_parent = p.ID
AND a.post_mime_type LIKE 'image/%'
AND a.post_type = 'attachment'
AND p.post_status = 'publish'
ORDER BY a.post_date DESC
LIMIT $offset, $per_page
HERE;
$attachments = $wpdb->get_results($sql);
?>
画像の一覧(件中~件目)
post_parent);
setup_postdata($post);
$attached_title = get_the_title($post->ID);
$attached_url = get_permalink($post->ID);
// 画像のアドレス/概要/タイトルを得る
$post = $attachment;
setup_postdata($post);
$url = wp_get_attachment_url($post->ID);
$alt = $post->post_content;
$title = $post->post_excerpt;
// 画像の幅と高さを求める
$at_data = wp_get_attachment_metadata($post->ID);
$width = $at_data['width'];
$height = $at_data['height'];
if (!$width || !$height) {
$width = $max_width;
$height = $max_height;
}
// 画像の縦横比を維持したまま、
// 幅が$max_width/高さが$max_heightに収まるように
// サイズを計算しなおす
if ($width > $max_width || $height > $max_height) {
// 横長の画像の場合
if ($width / $height >= $max_width / $max_height) {
$rate = $max_width / $width;
$width = $max_width;
$height = $height * $rate;
}
// 縦長の画像の場合
else {
$rate = $max_height / $height;
$width = $width * $rate;
$height = $max_height;
}
}
// 行の先頭/最後かどうかを、変数$row_first/$row_endに代入する
$row_first = ($ctr % $per_row == 0);
$row_end = ($ctr % $per_row == $per_row - 1);
?>
1) : ?>