Проблема в том, что при нажатии кнопки загружаются не сообщения, запрошенные по идентификатору, а все сообщения моего пользовательского типа сообщений.
Я пытался распечатать идентификатор сообщения через AJAX, чтобы проверить, правильно ли загружен идентификатор. Я сделал это, заменив строку PanelContent.innerHTML = data; на PanelContent.innerHTML = post_id; В результате идентификатор не определен.
HTML для отображения div и цикл PHP для отображения списка кнопок
Код: Выделить всё
wp-admin/admin-ajax.php'>
Код: Выделить всё
const loadPanelBtn = document.querySelectorAll('.js-btn-load-post');
const ajax_url = panel.dataset.ajaxUrl;
var i;
for( i = 0; i < loaderPanelBtn.length; i++ ){
loaderPanelBtn[i].addEventListener('click', function(e){
e.preventDefault();
let post_id = this.dataset.id;
const panelContent = document.querySelector(".js-panel-content");
const data = new FormData();
data.append( 'action', 'load_panel' );
data.append( 'post_id', post_id );
fetch(ajax_url, {
method: "POST",
body: data
})
.then((response) => response.text())
.then((data) => {
if (data) {
panelContent.innerHTML = data;
}
})
.catch((error) => {
});
});
};
Код: Выделить всё
function load_panel_content() {
$args = array(
'p' => $_POST['post_id'],
'post_type' => 'project'
);
$query = new WP_Query( $args );
while( $query->have_posts() ) : $query->the_post();
get_template_part( 'template-parts/content', 'post' );
endwhile;
wp_die();
}
add_action ( 'wp_ajax_nopriv_load_panel', 'load_panel_content' );
add_action ( 'wp_ajax_load_panel', 'load_panel_content' );
Подробнее здесь: https://stackoverflow.com/questions/798 ... -wordpress