2017-04-14 64 views
0

得到一個WordPress的帖子我想通過ID使用query_posts加載帖子,但它總是返回一個空數組。我使用SQL隨機獲得一個帖子Id,如下所示:如何通過ID使用query_posts

$randomProdSql = "SELECT ID FROM `posts` WHERE post_status = 'publish' ORDER BY RAND() LIMIT 0,1"; 

然後,我將它加載到一個變量使用;

$randomPost = $wpdb->get_var($randomProdSql); 

這工作正常,如果我打印出來,我得到一個Id。然後我這樣調用query_posts;

$args = array(
    'p' => $randomPost 
); 

$posts = query_posts($args); 

我現在預計$ posts變量包含帖子..但是,如果我打電話;

print_r($args); 
print_r($posts); 

我得到:

Array 
(
    [p] => 778 
) 
Array 
(
) 

有人能看到我在做什麼錯?

回答

3

更新您的代碼如下:

query_posts('p='.'"$randomPost"'); 

而且,而是使用query_posts()方法來獲得一個職位,你可以使用get_post()方法。

$my_post = get_post($randomPost); 
echo $my_post->post_title; 
+0

謝謝!如您所建議的那樣使用query_posts仍然無法正常工作,但切換爲使用get_post的確如此。 – Luke

+0

'p'只會得到你的帖子類型'post'的id。如果你想獲得任何其他帖子類型的id,你必須在屬性中定義post-type。 – BlueSuiter

0

根據你的代碼,你分享了你想用隨機的方式發帖的ID。以下代碼將以隨機方式獲取您的帖子ID。

通過使用post_per_page您可以控制結果中返回的帖子數量。此外,fields將強制查詢返回帖子的ID。但是,如果您想要檢索其他字段,請將其從此處刪除。因爲它只支持id字段。

有關詳細信息,請參閱本link

<?php 
    $args = array(
     'post_status' => 'publish', 
     'orderby' => 'rand', 
     'fields' => 'ids', 
     'posts_per_page' => '1' 
    ); 

    $posts = query_posts($args); 
?> 
+0

請詳細說明如何以及爲什麼您的代碼片段可以解決問題。謝謝。 –