Je construis un carrousel personnalisé pour un client. J'ai une fonction qui obtient des blocs de trois images de toutes les images attachées à un message:
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 );
Tout ce dont j'ai besoin pour finaliser ceci est de remplacer inneritem
par l'URL de l'image. Les données sont toutes présentes dans un tableau et, comme vous pouvez le constater, il suffit d'extraire la valeur de guid pour chaque élément. Le tableau ci-dessous découle de la suppression de la print_r( $split );
et j'ai supprimé toutes les données superflues pour des raisons de propreté:
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
)
)
)
Vous devriez pouvoir réécrire ce que vous avez sur et utiliser également get_permalink
as @Benoti déclaré en omettant le tableau $split
.
get_permalink
accepte l'identifiant de publication ou un objet de publication.
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>";
}
Je n'ai rien testé et lu votre code, mais il semble que vous puissiez obtenir get_permalink () comme je l'ai dit dans le commentaire, mais il est vrai que vous obtiendrez la page de pièce jointe et non son URL.
Vous pouvez accéder à l'ID d'objet, guid facilement
wp_get_attachment_url($inneritem[$i]->ID);
Alors
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;