Использование расширенных пользовательских полей с помощью WordPress и Лайтбокс

Я использую плагин ACF . Я хочу иметь поле, где я могу загрузить изображение, и результат отобразит полное изображение в Лайтбоксе, а затем полное изображение будет изменено на миниатюру из этого поля (например, обычный Лайтбокс).

Пока у меня есть сценарий, и вот где я нахожусь:

<div class="single last"> <a href="<?php echo the_field('image_gallery'); ?>" rel="lightbox" title="<?php the_title(); ?>"> <?php $main_car_pic = addslashes(the_repeater_field('image_gallery')); $reg_ext = "#.jpg#i"; $thumb_ext = "-150x150.jpg"; $car_thumb = preg_replace($reg_ext, $thumb_ext, $main_car_pic); echo $car_thumb ?> 

Поле ACF Repeater не работает должным образом, и я не могу работать, почему кто-нибудь имеет какой-либо опыт работы с ACF и изменения размера изображений для эскизов. Надеюсь, какой код я сделал, и я буду очень благодарен, если не комментировать, а я может поставлять все, что может помочь.

Здесь многое происходит. Во-первых, вы должны сохранить изображение поля ретранслятора как идентификатор (который, вероятно, требует изменения способа настройки подполя и, возможно, повторной загрузки некоторых ваших изображений), а затем использовать все функции API WordPress Core для его обработки. (Вероятно, вы пересечете пути с помощью wp_get_attachment_image_src .) Это избавит вас от вашего регулярного выражения, add_image_size ваш размер изображения, используя add_image_size и т. Д.

Во-вторых, вам нужно следовать примеру кода поля повторителя на странице, на которую вы ссылались. get_repeater_field() возвращает объект, который вы можете перебирать с помощью инструкции get_sub_field() и get_sub_field() . (В стороне: get_field( 'a_repeater_field' ) возвращает массив, с которым вы можете выполнить итерацию с помощью инструкции foreach .)

Ваш последний код будет выглядеть примерно так:

 <?php if( get_field('image_gallery') ) { while( the_repeater_field('image_gallery') ) { $large_img_src = wp_get_attachment_image_src( get_subfield('an_image_subfield'), 'large' ); echo '<a href="' . $large_img_src[0] . '">' . wp_get_attachment_image( get_sub_field('an_image_subfield'), 'thumbnail' ) . '</a>'; } } ?> 

Вы можете заменить «thumbnail» и «большой» на массив или размер пользовательского изображения.