虽然@birgire的答案解决了这个问题,但并没有解释它。$id[$counter] = get_the_id();
应该可以,但在这种情况下会触发Warning
不能将标量值用作数组。为什么?
the_post
runs setup_postdata
, 其中设置$id
到帖子ID,覆盖您的$id
把它变成一个整数。您可以通过添加var_dump
之后the_post()
, 像这样:
$products->the_post();
var_dump($id);
除此之外,您的代码过于复杂。你不需要柜台(如果你需要的话,你已经有了
$products->current_post
) 而且您不需要任何特定的函数来将项目推送到阵列上。您真正需要做的就是使用WordPress尚未使用的变量,这就是birgire的解决方案能够工作的原因。
$args = array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'ignore_sticky_posts\' => 1,
\'posts_per_page\' => 5,
\'orderby\' => \'date\',
\'order\' => \'desc\'
);
$ids = array();
$products = new WP_Query( $args );
if ( $products->have_posts() ) :
while ( $products->have_posts() ) :
$products->the_post();
$ids[] = $post->ID;
//custom_shop_array_create($product, $counter);
endwhile;
endif;