web-dev-qa-db-fra.com

Remplir le contenu de manière dynamique via AJAX et personnalisés

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>
1
APAD1

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>
3
APAD1