В WP я пытаюсь загрузить содержимое своих сообщений в DIV на странице через AJAX. Я установил следующие параметры:
в функциях. php:
add_action( 'wp_ajax_load_post_content', 'load_post_content' );
add_action( 'wp_ajax_nopriv_load_post_content', 'load_post_content' );
function load_post_content() {
$the_post_id = $_POST['the_ID'];
$args = array(
'post_type' => 'post',
'p' => $the_post_id
);
$ajax_query = new WP_Query($args);
$the_content;
if ( $ajax_query->have_posts() ) : while ( $ajax_query->have_posts() ) : $ajax_query->the_post();
$the_content = the_content();
endwhile;
endif;
echo $the_content;
wp_reset_postdata();
die();
}
jQuery в нижнем колонтитуле WP:
jQuery(".post-link").click(function(){
var post_id = jQuery(this).data('id');
jQuery.post(
ajaxurl,
{
'action': 'load_post_content',
'the_ID': post_id
},
function(response){
jQuery('#the-post-content').html(response);
}
);
return false;
});
, а также список сообщений и DIV для отображения содержимого в одиночном формате. php:
<?php $wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>-1)); ?>
<?php if ( $wpb_all_query->have_posts() ) : ?>
<ul>
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>" class="post-link"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
<div id="the-post-content"></div>
Я использовал этот подход из следующего: https://wordpress.stackexchange.com/questions/317277/get-post-content-and-show-it-in-a-div
Мой тестовый сайт: https://www.test.foundationbad.nl
Однако он не работает - нажатие на ссылки просто загружает сам пост, а не загружает содержимое в DIV содержимого сообщения по желанию. Я был бы очень благодарен за любые указатели, так как полный нуб до AJAX Я потратил много часов, пытаясь взломать это, пока безуспешно!