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?
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;
}
}
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.