J'utilise un champ de répéteur à partir de Champs personnalisés avancés pour créer plusieurs galeries de photos. Il y a 4 pages et chaque page a plusieurs galeries d'images. Pour cette raison, je souhaite réduire la charge en utilisant un seul fichier externe PHP pour générer le contenu et AJAX pour ne charger qu'une seule galerie à la fois.
Je ne sais pas trop comment y parvenir, car comme les champs ACF sont définis dans un fichier externe, il ne sait pas à partir de quelle page récupérer les champs.
Voici mon JavaScript jusqu'à présent:
var passObject = {};
$.ajax({
url:"<?php bloginfo('template_directory'); ?>/inc/galleries.php",
type: 'POST',
data: passObject,
success: function(resp) {
$('#photos').append(resp);
}
});
Et voici le contenu de galleries.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>
Voici ce que j'ai fini par faire sur la suggestion de @gdaniel:
Appel AJAX:
$('.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);
}
});
});
Et voici mon fichier PHP:
<?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>