Usando campos personalizados avançados com o Wordpress e o Lightbox

4

Estou usando o plug-in do ACF . Eu quero ter um campo onde eu possa enviar uma imagem, e o resultado irá mostrar a imagem completa no Lightbox e então a imagem completa será redimensionada em uma miniatura desse campo (como um Lightbox normal).

Até agora eu tenho o roteiro aqui, e é aqui que eu estou:

<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
?>

O campo Repetidor de ACF não está funcionando corretamente e não posso trabalhar por que alguém tem alguma experiência com ACF e redimensionamento de imagens para miniaturas? Espero que o código que eu fiz tenha ajudado e eu realmente apreciei, se comentar e eu posso fornecer qualquer coisa que possa ajudar.

    
por Owen O'Neill 13.07.2012 / 01:58

1 resposta

4

Há muita coisa acontecendo aqui. Primeiramente, você deve armazenar a imagem do campo do repetidor como um ID (que provavelmente requer a alteração da configuração do subcampo e, possivelmente, o re-carregamento de algumas de suas imagens) e usar todas as funções da API do WordPress Core para lidar com isso. (Você provavelmente vai se cruzar com wp_get_attachment_image_src .) Isso elimina o seu regexing, faz o tamanho da sua imagem aproveite add_image_size , etc.

Em segundo lugar, você precisa seguir o exemplo de código do campo de repetidora na página a qual você se conectou. get_repeater_field() retorna um objeto para o qual você pode iterar com uma instrução while semelhante a loop e get_sub_field() . (Como um aparte: get_field( 'a_repeater_field' ) retorna uma matriz que você pode percorrer com uma instrução foreach .)

Seu código final será parecido com isto:

<?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>';
    }
} ?>

Você pode substituir "thumbnail" e "large" por um array ou um tamanho de imagem personalizado.

    
por mrwweb 13.07.2012 / 02:15