请容忍我,因为我对这种方式使用Wordpress PHP还不熟悉。我有以下脚本:
<div id="content">
<?php
// check if the repeater field has rows of data
if( have_rows(\'repeat_field\') ):
$i = 0;
// loop through the rows of data
while ( have_rows(\'repeat_field\') ) : the_row();
$i++;
// display a sub field value
if (!empty(get_sub_field(\'feature_image_post\'))) {
echo \'<a href="\';
the_sub_field(\'restaurant_article_link\');
echo \'">\';
}
if( $i >= 78 ) {
break;
}
endwhile;
else :
// no rows found
endif;
?>
</div>
<div id="loading-image" style="display: none;"></div>
<div id="part2"></div>
<script>
var w = $(window);
window.onscroll = function(ev) {
if ($(document).height() - w.height() == w.scrollTop()) {
$(\'#loading-image\').show();
$.ajax({
url: "<?php echo get_stylesheet_directory_uri();?>/post-2.php",
cache: false,
success: function(result){
$("#part2").html(result);
},
complete: function(){
$(\'#loading-image\').hide();
}
});
}
};
</script>
我正在尝试加载的Php页面几乎包含相同的代码。加载200个字段后,它就会停止。
<?php
// check if the repeater field has rows of data
if( have_rows(\'repeat_field\') ):
$i = 0;
// loop through the rows of data
while ( have_rows(\'repeat_field\') ) : the_row();
$i++;
// display a sub field value
if (!empty(get_sub_field(\'feature_image_post\'))) {
echo \'<a href="\';
the_sub_field(\'restaurant_article_link\');
echo \'">\';
}
if( $i >= 200 ){
break;
}
endwhile;
else :
// no rows found
endif;
?>
我不知道为什么php页面(post-2.php)没有加载。奇怪的是当我
<?php echo get_stylesheet_directory_uri();?>/post-2.php
使用测试html页面
<?php echo get_stylesheet_directory_uri();?>/test.html
加载测试页面(test.html)。我不得不说,我在我的控制台中查看了添加的浏览器的控制台选项卡
console.log();
查看任何错误,我不会收到任何错误。我还查看了我的网络标签,以确保post-2。php加载正确,我没有收到错误。我的目标是找出我的PHP页面没有加载的原因
*****更新****我被告知要使用$post\\u id,但我从未使用过它。有人有这样的工作实例吗?是否类似于if( have_rows(\'repeat_field\', $post_id) ):
或if( have_rows(\'repeat_field\', 55612) ):
?
SO网友:Bikash Waiba
我以前没有使用过ACF,但我怀疑您post-2.php
缺乏$post_id
如中所示have_rows($field_name, $post_id)
(see). 如果您使用的是ajax,那么您的ajax功能就无法知道您所在的页面以及您要查找的帖子,从而更好地使用$post_id
告诉ajax函数您需要哪个post数据。
在中使用ajax的正确方法wordpress
正在将ajax请求定向到ajaxurl = admin_url().\'admin-ajax.php\'
. 最好是wp_localize_script
但我可以这样做<div id="part2" data-url="<?php echo admin_url().\'admin-ajax.php\'; ?>"></div>
以及ajaxurl = $(\'#part2\').data(\'url);
你可以用这样的东西
$.ajax({
url: ajaxurl,
cache: false,
type : \'post\',
data : {
action: \'load_post_acf\' // This will be used in hook
},
success: function(result){
$("#part2").html(result);
$(\'#loading-image\').hide();
},
});
的Ajax函数
post-2.php
你可以做一些像。。
add_action(\'wp_ajax_nopriv_load_post_acf\',\'your_ajax_function\');
add_action(\'wp_ajax_load_post_acf\',\'your_ajax_function\');
function your_ajax_function(){
global $post;
if( have_rows(\'repeat_field\',$post->ID) ):
// do something
else:
echo \'<h4>No rows found.</h4>\'; //do something else
endif;
}