Reputation: 1143
I want to ajaxify TwentyThirteen WordPress template and I have a function in functions.php
function prefix_ajax_add_foobar() {
echo("add_foobar is trigered <br/>");
if ( have_posts() ) { echo ("have posts <br/>");
while ( have_posts() ) {
the_post(); echo ("the_post() <br/>");
the_ID(); echo ("the_ID() <br/>");
}
}
die("The End");
}
But I only see those results:
add_foobar is trigered
The End
So can you give me an idea why those functions are not working?
Upvotes: 1
Views: 1745
Reputation: 26075
That's because you have to make your own query in that function, Ajax isn't aware of your current loop. And you'd be better using get_posts()
, see When should you use WP_Query vs query_posts() vs get_posts()?
It'll be something like:
$my_query = get_posts( $arguments );
if( $my_query ) {
foreach( $my_query as $p ) {
echo $p->ID . $p->post_title;
}
}
Upvotes: 2
Reputation: 343
have_posts()
will return TRUE if it has any results to loop over and FALSE otherwise. It does seem that it is currently not getting any results. Have you tried calling query_posts($args)
? Call it before the have_posts()
Example:
query_posts( 'posts_per_page=5' );
to show your 5 latest posts
Upvotes: 0