我解决了这个问题,因为Tom J Nowell 他在评论中给了我正确的想法。为了获得上一篇和下一篇文章的标识符,一切都非常简单(但我自己没有想到),将它们包含到ajax请求中就足够了。这是它的外观:
<?php
$post = get_post($post_id);
$previous_post = get_previous_post();
$next_post = get_next_post();
?>
<div data-next-id="<?php echo $next_post->ID; ?>" data-prev-id="<?php echo $previous_post->ID; ?>" data-new-id="<?php echo get_the_ID(); ?>" class="news-item">
在明信片中,创建了两个属性,其中传递了上一篇和下一篇文章的ID。
现在稍微修改了js代码:
if(prevPost !== null){
prevPost.addEventListener(\'click\', function(){
let prevAttribute = this.getAttribute(\'data-prev-id\');
$.ajax({
type : \'POST\',
url : wp_helper.ajax_url,
data : {
postid : prevAttribute,
action : \'loadprevpost\',
},
success : function( data ){
$(\'#exampleModal .modal-body\').html(data);
lazyLoad();
}
});
})
}
和php函数:
add_action( \'wp_ajax_loadprevpost\', \'really_loadprevpost\' );
add_action( \'wp_ajax_nopriv_loadprevpost\', \'really_loadprevpost\' );
function really_loadprevpost() {
$postid = $_POST[ \'postid\' ];
$post = get_post($postid );
setup_postdata( $post );
if (have_rows(\'news_content\',$postid)) {
echo\'<div class="news-single">\';
while (have_rows(\'news_content\',$postid)) : the_row();
if (get_row_layout() == \'section_title\'){
/// Post data here
}
endwhile;
echo\'</div>\';
}
wp_reset_postdata();
wp_die();
}
也许这个解决方案并不优雅,但它是有效的,对我来说,这是现在的主要问题。