如何使用query_posts获取Id的Wordpress帖子

时间:2017-04-14 09:48:39

标签: php wordpress

我正在尝试使用query_posts按ID加载帖子,但它总是返回一个空数组。我使用SQL随机获得一个帖子ID,如下所示;

$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
(
)

谁能看到我做错了什么?

2 个答案:

答案 0 :(得分:3)

更新您的代码,如下所示:

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

另外,使用query_posts()方法获取单个帖子,您可以使用get_post()方法。

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

答案 1 :(得分: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);
?>