此函数包含对状态转换后操作挂钩的do\\u action()调用。函数名称中单词的顺序可能会令人困惑–it does not change the status of posts, it only calls
actions that can be hooked into by plugin developers.
https://codex.wordpress.org/Function_Reference/wp_transition_post_status
你想要的是
wp_update_post
, 您还使用
WP_Query
错误:
```$notpayed\\u posts=新的WP\\u查询(数组(\'meta\\u key\'=>\'u payment\',\'meta\\u value\'=>\'0\');
while ($notpayed_posts->have_posts()) {
$notpayed_posts->the_post();
wp_update_post( array(
\'ID\' => get_the_ID(),
\'post_status\' => \'draft\'
));
}
wp_reset_postdata();
此外,请记住,您的查询是一个昂贵/非常慢的post meta查询,post meta不是为搜索或查询您要查找的帖子而构建的。考虑一个分类术语。
之后,你也不会更改meta,因此如果有10篇文章匹配,那么每次页面加载都会尝试更新10篇文章,即使它们已经更新了!或者使用update_post_meta
或者在查询中检查post状态,例如。
$notpayed_posts = new WP_Query( array(
\'post_status\' => \'publish\',
\'meta_key\' => \'_payment\',
\'meta_value\' => \'0\'
) );
此外,使用cron作业,不要在每次加载页面时使用
init
hook,这对性能非常有害,并且与页面缓存不兼容