クライアント用のカスタムカルーセルを作成しています。投稿に添付されているすべての画像から3つの画像のブロックを取得する関数があります。
global $rental;
$images = get_children( array(
'post_parent' => $rental_id,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID'
) );
$array = $images;
$number_of_elements = 3;
$count = count( $array );
$split = array();
for ( $i = 0; $i <= $count - 1; $i++ ) {
$slices = array_slice( $array, $i , $number_of_elements);
if ( count( $slices ) != $number_of_elements )
break;
$split[] = $slices;
}
if ($split) :
foreach ($split as $outeritem) :
echo '<div class="Outer Top">';
foreach ($split as $inneritem) :
echo '<div class="Inner Top">';
echo '<img src="' . $inneritem . '">';
echo '</div>';
endforeach;
echo '</div>';
endforeach;
endif;
//print_r( $split );
これを完成させるために必要なのは、inneritem
を画像のURLに置き換えることだけです。データはすべて配列内にあります。見てのとおり、各項目について guid の値を取得する必要があります。以下の配列はprint_r( $split );
のコメントを外したことによるもので、整理のために余分なデータをすべて削除しました。
Array (
[0] => Array (
[0] => WP_Post Object (
[ID] => 120
[guid] => http://******/wp-content/uploads/2016/12/T15923-11-1-1.jpg
)
[1] => WP_Post Object (
[ID] => 121
[guid] => http://******/wp-content/uploads/2016/12/T15923-12-1-1.jpg
)
[2] => WP_Post Object (
[ID] => 122
[guid] => http://******/wp-content/uploads/2016/12/T15898.jpg
)
)
[1] => Array (
[0] => WP_Post Object (
[ID] => 121
[guid] => http://******/wp-content/uploads/2016/12/T15923-12-1-1.jpg
)
[1] => WP_Post Object (
[ID] => 122
[guid] => http://******/wp-content/uploads/2016/12/T15898.jpg
)
[2] => WP_Post Object (
[ID] => 123
[guid] => http://******/wp-content/uploads/2016/12/T15923-13-1-1.jpg
)
)
[2] => Array (
[0] => WP_Post Object (
[ID] => 122
[guid] => http://******/wp-content/uploads/2016/12/T15898.jpg
)
[1] => WP_Post Object (
[ID] => 123
[guid] => http://******/wp-content/uploads/2016/12/T15923-13-1-1.jpg
)
[2] => WP_Post Object (
[ID] => 124
[guid] => http://******/wp-content/uploads/2016/12/T15923-14-1.jpg
)
)
)
get_permalink
配列を省略しながら、 $split
のように @Benoti を使って、自分の持っているものを書き直すことができるはずです。
get_permalink
はPost IDまたはpostオブジェクトを受け入れます。
global $rental;
$images = get_children( array(
'post_parent' => $rental_id,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID'
) );
$array = $images;
$number_of_elements = 3;
$count = count( $array );
for ( $i = 0; $i <= $count - 1; $i++ ) {
$slices = array_slice( $array, $i , $number_of_elements);
if ( count( $slices ) != $number_of_elements )
break;
echo "<div class='Outer Top'>";
foreach( $slices as $inneritem ) {
$link = wp_get_attachment_url( $inneritem->ID );
echo "<div class='Inner Top'>";
echo "<img src=' $link '>";
echo "</div>";
}
echo "</div>";
}
何もテストせずにコードを読みましたが、コメントで述べたようにget_permalink()を実行できるようですが、URLではなく添付ページが表示されるのは事実です。
あなたは簡単にguid、オブジェクトIDにアクセスすることができます
wp_get_attachment_url($inneritem[$i]->ID);
そう
if ($split) :
foreach ($split as $outeritem) :
echo '<div class="Outer Top">';
$i=0;
foreach ($split as $inneritem) :
echo '<div class="Inner Top">';
echo '<img src="' . wp_get_attachment_url($inneritem[$i]->ID) . '">';
echo '</div>';
$i++;
endforeach;
echo '</div>';
endforeach;
endif;