我正在尝试使用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
(
)
谁能看到我做错了什么?
答案 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);
?>