我正在使用高级自定义字段中的repeater字段创建多个照片库。共有4页,每页有多个图像库。因此,我希望通过使用单个外部PHP文件生成内容和AJAX一次只加载一个库来减少负载。
我不太确定如何做到这一点,因为ACF字段是在外部文件中定义的,它不知道从哪个页面获取字段。
以下是我的JavaScript:
var passObject = {};
$.ajax({
url:"<?php bloginfo(\'template_directory\'); ?>/inc/galleries.php",
type: \'POST\',
data: passObject,
success: function(resp) {
$(\'#photos\').append(resp);
}
});
这是画廊的内容。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>
最合适的回答,由SO网友:APAD1 整理而成
以下是我根据@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>