Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么Wordpress查询帖子没有显示正确的帖子?_Php_Wordpress - Fatal编程技术网

Php 为什么Wordpress查询帖子没有显示正确的帖子?

Php 为什么Wordpress查询帖子没有显示正确的帖子?,php,wordpress,Php,Wordpress,我尝试使用query\u posts查询wordpress post,并尝试将它们保存在一个数组中,以便从数组中检索帖子。这就是我在做的 $posts= array(); $args = array('posts_per_page' =>3,'cat' => 3 ); $posts[] = query_posts( $args ); global $post; if ( ! empty($posts) ) : foreach ($posts as $post) {

我尝试使用
query\u posts
查询wordpress post,并尝试将它们保存在一个数组中,以便从数组中检索帖子。这就是我在做的

$posts= array();
$args = array('posts_per_page' =>3,'cat' => 3 );
$posts[] = query_posts( $args );

global $post;
if ( ! empty($posts) ) :
    foreach ($posts as $post) {
        setup_postdata($post);  
        echo get_the_title();
    }
    wp_reset_postdata();
endif;
wp_reset_query();

当我运行这个脚本时,它会显示一个不在
cat
3中的帖子。但是如果我打印($post)它会显示正确的三篇文章。知道我哪里出错了吗?

记住query\u posts修改了主循环,所以可能不是来自cat=3的post来自主循环。尝试使用创建新查询

这个方法也应该有效,或者是二次查询的首选方法

global $post;
$posts_args  = array('cat' => 3, 'posts_per_page' => 3);
$posts_query = new WP_Query($posts_args);
$posts_arr   = $posts_query->get_posts();

if ( ! empty($posts_arr) ) :
    foreach ($posts_arr as $post) {
        setup_postdata($post);
        echo get_the_title();
    }
    wp_reset_postdata();
endif;
wp_reset_query();

无需将其声明为数组:

global $post;
$args = array('posts_per_page' => 3,'cat' => 3);
$query = query_posts($args);
foreach ($query as $post) {
   setup_postdata($post); 
   the_title();
}
wp_reset_query();

为什么要声明全局$post并按顺序重新分配它?检查这些帖子中是否有一个是粘性的,wordpress有一个东西可以在查询中“注入”粘性帖子,使用
'ignore_sticky_posts'=>1
它仍然不起作用您应该删除对
$posts
的空数组的初始分配,并在分配
query\u posts
的结果时删除括号。当前,
$posts
始终是一个包含单个数组和结果的数组。实际上,我希望
$posts
位于数组中,以便在使用多个查询时可以从中获取帖子。我正在使用一个数组将帖子放入数组中。我想从数组中查询帖子。@user3293145 you go posts\u arr我想这是您想要的。需要将其声明为数组,因为我将使用多个查询来获取帖子。@user3293145然后您可以使用多个循环和
query\u posts
或将
$query
存储到另一个变量中,以便以后在需要时使用这就是你想要的。问题是我想使用多个查询,但在一个数组中显示结果,因为我想从多个查询中混合获得帖子
global $post;
$args = array('posts_per_page' => 3,'cat' => 3);
$query = query_posts($args);
foreach ($query as $post) {
   setup_postdata($post); 
   the_title();
}
wp_reset_query();