2013-10-25 56 views
1

工作,我想ajaxify TwentyThirteen WordPress的模板,我在functions.php的WordPress的have_posts()內部沒有的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 

那麼你能給我一個想法,爲什麼這些功能不起作用?

+0

嗯,這會阻止他們的工作是,如果'have_posts()'返回假的嘛。這個函數如何被調用?有沒有一個'$ wpdb'查詢在那個時候處於活動狀態? – andrewsi

+0

我不知道,我沒有做任何事情,我認爲WP會自動激活它。因爲這段代碼是在index.php文件中加入的,所以在包含header.php之後,它不會激活db。那麼你的建議是什麼?我該怎麼辦? – Irakli

+0

你從哪裏得到代碼?那裏有指示嗎? – andrewsi

回答

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; 
    } 
} 
+0

我剛剛更新了一個完整的WP Ajax示例[這裏](http://stackoverflow.com/a/13614297),檢查郵件的歷史作爲第一個版本是一個主題。現在它是一個插件。 – brasofilo

0

have_posts()將返回TRUE,如果它有任何結果循環,否則返回FALSE。它似乎目前沒有得到任何結果。你有沒有試過撥打query_posts($args)?在have_posts() 實例之前調用它: query_posts('posts_per_page=5');顯示你最新的帖子

相關問題