アドバンストカスタムフィールドのリピーターフィールドを使用して、複数のフォトギャラリーを作成しています。 4ページあり、各ページには複数の画像ギャラリーがあります。このため、コンテンツを生成するために単一の外部PHPファイルを使用し、一度に1つのギャラリーのみをロードするためにAJAXを使用して負荷を軽減したいです。
ACFフィールドは外部ファイルで定義されているため、どのページからフィールドを取得するのかわからないため、これを実現する方法はよくわかりません。
これが私のJavaScriptです。
var passObject = {};
$.ajax({
url:"<?php bloginfo('template_directory'); ?>/inc/galleries.php",
type: 'POST',
data: passObject,
success: function(resp) {
$('#photos').append(resp);
}
});
そして、これが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>
これが@ gdanielの提案に基づいてやったことです。
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);
}
});
});
そして、これが私の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>