在归档页面上,通过单击新闻项,我需要在模式窗口中实现新闻的外观。如果使用ajax,这里没有什么困难。
这是我的js代码:
const newsItem = document.querySelectorAll(\'.news-item\');
if(newsItem !== null){
newsItem.forEach(item => {
item.addEventListener(\'click\', function(){
let dataAttribute = item.getAttribute(\'data-new-id\');
$.ajax({
type : \'POST\',
url : wp_helper.ajax_url,
data : {
postid : dataAttribute,
action : \'loadmodal\',
},
success : function( data ){
$(\'#exampleModal .modal-body\').html(data);
lazyLoad();
}
});
});
});
}
$(\'.btn-close\').on(\'click\', function(){
$(\'#modal-content\').empty();
})
这是php函数的一部分add_action( \'wp_ajax_loadmodal\', \'really_loadmodal\' );
add_action( \'wp_ajax_nopriv_loadmodal\', \'really_loadmodal\' );
function really_loadmodal() {
$postid = $_POST[ \'postid\' ];
$post = get_post($postid );
setup_postdata( $post );
if (have_rows(\'news_content\',$postid)) {
echo $post->ID;
echo \'<div class="modal-header">
<div class="navigation-arrows">
<div class="nav-arrow left"></div>
<div class="nav-arrow right"></div>
</div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>\';
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();
}
这里您可以看到以下几行:<div class="modal-header">
<div class="navigation-arrows">
<div class="nav-arrow left"></div>
<div class="nav-arrow right"></div>
</div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
它们意味着跳转到上一个和下一个帖子。如果我可以获得当前显示在模式窗口中的这些帖子的ID,我可以使用ajax轻松实现此功能。但我伤了头,花了很多时间,没有找到解决办法。伙计们,请帮忙,否则就不可能实现这个功能了?