web-dev-qa-db-de.com

Verwenden von erweiterten benutzerdefinierten Feldern mit WordPress und Lightbox

Ich benutze das ACF Plugin . Ich möchte ein Feld haben, in das ich ein Bild hochladen kann. Als Ergebnis wird das vollständige Bild in der Lightbox angezeigt. Anschließend wird die Größe des vollständigen Bildes in ein Miniaturbild aus diesem Feld geändert (wie bei einer normalen Lightbox).

Bisher habe ich das Skript hier und hier bin ich:

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

Das ACF-Repeater-Feld funktioniert nicht richtig und ich kann nicht arbeiten, warum, hat jemand Erfahrung mit ACF und der Größenänderung von Bildern für Miniaturansichten. Ich hoffe, welcher Code mir geholfen hat, und ich werde es wirklich schätzen, wenn ich nicht kommentiere und ich kann alles liefern, was helfen könnte.

4
Owen O'Neill

Hier ist viel los. Zunächst sollten Sie das Repeater-Feldbild als ID speichern (was möglicherweise eine Änderung der Einstellungen des Unterfelds und möglicherweise ein erneutes Hochladen einiger Ihrer Bilder erfordert) und dann alle Funktionen der WordPress Core-API verwenden, um damit umzugehen. (Wahrscheinlich kreuzen Sie die Pfade mit wp_get_attachment_image_src .) Dadurch wird die Regex-Funktion aufgehoben, die Bildgröße wird unter anderem durch add_image_size verbessert.

Zweitens müssen Sie dem Codebeispiel des Repeater-Felds auf der Seite folgen, auf die Sie verlinkt haben. get_repeater_field() gibt ein Objekt zurück, das Sie mit einer schleifenartigen while-Anweisung und get_sub_field() durchlaufen können. (Abgesehen davon: get_field( 'a_repeater_field' ) gibt ein Array zurück, das Sie mit einer foreach-Anweisung durchlaufen können.)

Ihr endgültiger Code sieht ungefähr so ​​aus:

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

Sie können 'Thumbnail' und 'Large' durch ein Array oder eine benutzerdefinierte Bildgröße ersetzen.

4
mrwweb