Так как на мой последний вопрос был дан довольно быстрый ответ, я решил снова попытать счастья.
Я пытаюсь создать галерею в пользовательском типе поста, который я создал. Я хотел бы иметь возможность добавлять изображения / галерею к сообщению через редактор администратора WordPress, но затем иметь функцию перетаскивания изображений, оборачивать их в div и заменять существующую галерею новыми изображениями.
Я хотел бы сделать это, потому что я хотел бы, чтобы изображения помещались в сетку изображений разных размеров. Например, изображение 1 будет полной шириной, изображение 2 — половиной ширины, изображение 3 — четверть и так далее.
Я пробовал два метода, один из которых get_children()
$featuredImage = get_post_thumbnail_id( $post->ID );
$imageArgs = array(
'numberposts' => 5,
'order' => 'DESC',
'post_mime_type' => 'image',
'post_parent' => $post->ID,
'post_type' => 'attachment',
'exclude' => $featuredImage
);
$attachments = get_children($imageArgs, ARRAY_A);
$rekeyed_array = array_values($attachments);
$child_image = $rekeyed_array[0];
echo '<div class="project-img"><img src="' . $child_image['guid'] . '" class="project-image"></div>';
$child_image = $rekeyed_array[1];
echo '<div class="project-img w2"><img src="' . $child_image['guid'] . '"></div>';
$child_image = $rekeyed_array[2];
echo '<div class="project-img w3"><img src="' . $child_image['guid'] . '"></div>';
echo '<div class="project-img w3"><img src="' . $child_image['guid'] . '"></div>';
а другое существо get_post_gallery()
$gallery = get_post_gallery( get_the_ID(), false );
/* Loop through all the image and output them one by one */
foreach( $gallery['src'] AS $src )
{
?>
<div class="project-img">
<img src="<?php echo $src; ?>" alt="Gallery image" />
</div>
<?php
}
Я не добился большого прогресса с get_post_gallery()
, но я вроде понимаю, что мне придется использовать wp_get_attachment_url()
чтобы получить полноразмерные изображения вместо миниатюр.
Теперь два вопроса:
Я немного озадачен массивами, так как мне поступить
выбрав первое изображение в массиве и обернув его в div с
класс «image-large», а затем второе изображение и завернуть его в
div с классом «image-medium»?
Как заменить галерею / изображения, которые я добавил через редактор
с новой галереей / изображениями? Прямо сейчас я получаю два экземпляра
изображения, оригинал, добавленный через редактор, и изображения
получается через функции.
РЕДАКТИРОВАТЬ
Я разобрался с вопросом 1, я думаю. Читайте об ассоциативных массивах и поняли, что вы можете сделать что-то вроде echo $gallery['src'][0];
чтобы получить исходный URL каждого изображения. Все еще смущен вопросом 2, все же.
Догадаться.
//Remove original Gallery
function remove_the_first_gallery( $output, $attr ){
$output = '<!-- gallery 1 was here -->'; // Must be non-empty.
return $output;
}
add_filter( 'post_gallery', 'remove_the_first_gallery' );
Это удалило все галереи на странице. Но так как моя новая галерея технически не является post_gallery, она осталась одна.
Других решений пока нет …