特定カテゴリに紐付いた画像を取得する
公開日:
更新日:
記事に紐付いた画像ではなく、特定カテゴリに紐付いた画像の取得方法をご紹介します。
ただし、負荷対策のため全件を出力するわけではなく、特定カテゴリ内の新着num件の記事を対象に紐付いている画像を取得して返します。
では、サンプルコードです。
まずは、テンプレートのfunctions.phpに以下の関数を記述してください。
function getCatImage($cat,$num = null){ if($cat == null){ return(null); } if($num != null && ereg("^([0-9]+)$",$num)){ $get_parm = 'numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat; }else{ // 件数が指定されていない場合はWordPressの既定値(5件)が適用される $get_parm = 'order=DESC&orderby=post_date&category='.$cat; } $myposts = get_posts($get_parm); $file_count = 0; foreach($myposts as $mypost) : $files = get_children(array('post_parent' => $mypost->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image')); if(is_array($files) && count($files) != 0){ foreach($files as $file){ $resultArray[$file_count]["url"] = wp_get_attachment_url($file->ID); $resultArray[$file_count]["alt"] = $file->post_title; $file_count++; } } endforeach; if(!empty($resultArray) && is_array($resultArray)){ return($resultArray); } else{ return(null); } }
まずは、$catで指定されたカテゴリに属する新着記事$num件を取得します。
$numは、状況に応じて適宜調整してください。(あまり多くすると負荷が上がりますので要注意です)
なお、$numが未指定の場合は、WordPressのget_postsの初期値である5が適用されます。
取得した記事に紐付いた画像があれば取得し、配列に格納して返します。
無い場合はnullが返ります。
呼び出し方法は、以下のとおりです。
$imageArray = getCatImage(2,20);
該当する画像がある場合は、$imageArray[n][”url”]には画像のURLが、$imageArray[n][”alt”]には画像のタイトルが入ります。
nは数字です。