使用自定义查询通过AJAX获取ACF字段值返回null,求解决?
AJAX加载更多时无法获取ACF自定义字段值(返回null)
我在实现AJAX加载更多功能时,无法获取ACF自定义字段值,始终返回null,调试输出如下:
/var/www/html/wp-content/themes/PagStream/inc/helpers/ajax-functions.php:112: array (size=2) 'group_header' => null 'flexible_post_components' => null
group_header是ACF组字段,reading_time是其下的子字段。非AJAX场景下查询这些字段完全正常,但在AJAX加载更多的回调中始终返回null。已尝试重置查询、修改查询语句,问题仍未解决,求指点。
以下是相关代码:
前端JS代码
jQuery(function ($) { $("#load-more").click(function (e) { e.preventDefault(); var button = $(this), data = { action: "loadmore", query: loadmore_params.posts, page: loadmore_params.current_page, }; var textButton = button.text(); $.ajax({ url: loadmore_params.ajaxurl, data: data, type: "POST", beforeSend: function (v) { button.text("Loading..."); }, success: function (data) { if (data) { button.text(textButton); $(".grid__inner").append(data); loadmore_params.current_page++; if (loadmore_params.current_page == loadmore_params.max_page) button.remove(); } else { button.remove(); } }, error: function(){ console.log('error') } }); }); });
本地化PHP代码
global $wp_query; wp_localize_script('domain_js', 'loadmore_params', array( 'ajaxurl' => site_url() . '/wp-admin/admin-ajax.php', 'posts' => json_encode($wp_query->query_vars), 'current_page' => get_query_var('paged') ? get_query_var('paged') : 1, 'max_page' => $wp_query->max_num_pages ));
AJAX处理函数代码
function loadmore_ajax_handler(){ $args = json_decode( stripslashes( $_POST['query'] ), true ); $args['paged'] = $_POST['page'] + 1; // we need next page to be loaded $args['post_status'] = 'publish'; query_posts( $args ); if (have_posts()) : // run the loop while (have_posts()) : the_post(); $hero = get_field('group_header', get_the_id()); echo '<pre>'; var_dump($hero); echo '</pre>'; if ($hero) : echo '<pre>'; var_dump($hero['reading_time']); echo '</pre>'; ?> <?php endif; endwhile; endif; wp_reset_query(); die; } add_action('wp_ajax_loadmore', 'loadmore_ajax_handler'); add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler');
内容的提问来源于stack exchange,提问作者Rodrigo Libraga
相关产品推荐
相关产品推荐

