1

I'm trying to dynamically load blocks via AJAX:

  • Blocks with the ID's 1, 2, 3, 4 and 5 are loaded by default on the page.
  • On "Load more" click, five new blocks will show (with the ID's 6,7, 8, 9 and 10).

However, I currently can't even get the ID's of the new blocks to echo out on the page and I'm unsure why? I've tried globalising the var too.

Current approach (ajax-loaders.php):

function ajax_handler(){

  check_ajax_referer('load_more', 'security');

  $args = json_decode(( $_POST['query'] ), true ); 

  global $postId;
  $postId = get_the_id($args);

  if( $args->have_posts() ) : 
    while( have_posts() ): the_post(); 
      echo "the ID of this post is:".$postId;
    endwhile;
  endif;
  die;
}

In console, I get an post error.

And if I do:

echo "the ID of this post is:".$postId; var_dump($args);

It returns the ID of this post is:NULL.

Unsure on what's happening?

Freddy
  • 683
  • 4
  • 35
  • 114
  • 1
    What exactly is being $_POSTed? Also, your loop makes no sense inside an ajax call... Did you check the documentation for [`get_the_id()`](https://developer.wordpress.org/reference/functions/get_the_id/)?? What you need is `get_posts` and it has a different loop. See https://stackoverflow.com/a/19598561/1287812 – brasofilo Nov 08 '18 at 11:38

1 Answers1

1

Simple get_the_id() works within the WP loop and you've put it outside the loop. try:

echo "the ID of this post is:" . get_the_id();

Outside the loop:

global $post;
postId = $post->ID;
Angel Deykov
  • 1,199
  • 1
  • 9
  • 15