WordPress has_posts()在Functions.php中不起作用

时间:2013-10-25 19:22:24

标签: php ajax wordpress function wordpress-theming

我想ajaxify TwentyThirteen WordPress模板,我在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");
}

但我只看到那些结果:

add_foobar is trigered 
The End

那么你能告诉我为什么这些功能不起作用吗?

2 个答案:

答案 0 :(得分:2)

那是因为你必须在该函数中进行自己的查询,Ajax不知道你当前的循环。您最好使用get_posts(),请参阅When should you use WP_Query vs query_posts() vs get_posts()?

这将是:

$my_query = get_posts( $arguments );
if( $my_query ) {
    foreach( $my_query as $p ) {
        echo $p->ID . $p->post_title;
    }
}

答案 1 :(得分:0)

如果有任何结果要循环,

have_posts()将返回TRUE,否则返回FALSE。它似乎确实没有得到任何结果。您是否尝试过调用query_posts($args)?在have_posts()之前调用它 例: query_posts( 'posts_per_page=5' );显示您的5条最新帖子