Ich verwende ein Repeater-Feld aus "Erweiterte benutzerdefinierte Felder", um mehrere Fotogalerien zu erstellen. Es gibt 4 Seiten und jede Seite hat mehrere Bildergalerien. Aus diesem Grund möchte ich die Belastung verringern, indem ich eine einzelne externe PHP -Datei verwende, um den Inhalt zu generieren, und AJAX, um jeweils nur eine Galerie zu laden.
Ich bin nicht ganz sicher, wie dies erreicht werden soll, da die ACF-Felder in einer externen Datei definiert werden und nicht weiß, von welcher Seite die Felder abgerufen werden sollen.
Hier ist mein JavaScript bisher:
var passObject = {};
$.ajax({
url:"<?php bloginfo('template_directory'); ?>/inc/galleries.php",
type: 'POST',
data: passObject,
success: function(resp) {
$('#photos').append(resp);
}
});
Und hier ist der Inhalt von gallery.php:
<div class="photos">
<h1>Photo Gallery</h1>
<?php if( have_rows('gallery') ): ?>
<?php while( have_rows('gallery') ): the_row();
// vars
$photo = get_sub_field('photos');
?>
<div class="image"><img src="<?php echo $photo['sizes']['gallery-thumb']; ?>" alt="<?php echo $photo['alt']; ?>" /></div>
<?php endwhile; ?>
<?php endif; ?>
</div>
Folgendes habe ich auf der Grundlage von @ gdaniels Vorschlag getan:
AJAX-Aufruf:
$('.btn').click(function() {
$.ajax({
url:"<?php bloginfo('template_directory'); ?>/inc/galleries.php",
type: 'POST',
data: {postID: '<?=$post->ID;?>', galleryCategory: $(this).attr("data-content")},
success: function(resp) {
$('#photos').append(resp);
}
});
});
Und hier ist meine PHP Datei:
<?php
require('../../../../wp-load.php');
$postid = $_POST['postID'];
$galcat = $_POST['galleryCategory'];
?>
<div class="photos" id="$galcat">
<h1><?php echo $galcat; ?> Photos</h1>
<?php if( have_rows($galcat,$postid) ): ?>
<?php while( have_rows($galcat,$postid) ): the_row();
// vars
$photo = get_sub_field('photos');
?>
<div class="image"><img src="<?php echo $photo['sizes']['gallery-thumb']; ?>" alt="<?php echo $photo['alt']; ?>" /></div>
<?php endwhile; ?>
<?php endif; ?>
</div>