特别是WooCommerce产品页面。
我正在使用WP_Query
生成数组。
$params = array(
\'posts_per_page\' => -1,
\'post_type\' => \'product\',
\'orderby\' => \'menu-order\',
\'order\' => \'asc\',
\'fields\' => \'ids\',
\'tax_query\' =>
array(
array(
\'taxonomy\' => \'product_visibility\',
\'field\' => \'term_id\',
\'terms\' => 7,
\'operator\' => \'IN\'
)
));
$wc_query = new WP_Query($params);
$ids = $wc_query->posts;
中的数组
$ids
看起来像
Array
(
[0] => 8700
[1] => 2558
[2] => 2579
[3] => 2582
[4] => 2588
. . . . . .
我都试过了
for loop
for ($i = 0; $i < $postcount; $i++) {
wp_update_post(array(\'ID\' => $ids[$i], \'post_status\' => \'draft\'));
}
和a
foreach loop
foreach($post_ids as $post_id) {
$post = array( \'ID\' => $ids, \'post_status\' => \'draft\' );
wp_update_post($post);
}
两者都不起作用。页面仍设置为
Published
.
有人知道为什么这样不行吗?
最合适的回答,由SO网友:Daniel Fonda 整理而成
在for循环中,我认为您缺少$postcount变量。。。还有$idss[$i]的拼写错误。。。。根据您所显示的内容,应该是$id[i]。
for ($i = 0; $i < $postcount; $i++) {
wp_update_post(array(\'ID\' => $ids[$i], \'post_status\' => \'draft\'));
}
尽管如此,我还是会选择foreach循环。
你犯的错误是第二行。
<?php
$post_ids = $wc_query->posts;
foreach($post_ids as $post => $post_id) {
echo $post_id;
}
?>
假设这会产生一个很好的ID列表,那么我将执行以下操作:
<?php
$post_ids = $wc_query->posts;
foreach($post_ids as $post => $post_id) {
echo $post_id;
$arrPost = array( \'ID\' => $post_id, \'post_status\' => \'draft\' );
wp_update_post($arrPost);
}
?>
恐怕这是我在无法访问这些文件的情况下所能做的最好的了。
回想起var_dump()
是你的朋友!