通过将2个命令链接在一起,可以在不使用WP CLI编写任何代码的情况下执行此操作:
从2017年4月或更早日期检索所有帖子的命令更新所有帖子并将post\\u状态设置为draft
在2017年4月之前检索所有帖子
我们可以使用
wp post list
要做到这一点,我们需要将它们作为post ID传递给下一个命令。
More details on this command here.
例如,我们可以获取2017年的所有帖子,如下所示:
wp post list --year="2017" --format=ids
四月的所有帖子如下:
wp post list --year="2017" --month="4" --format=ids
这样,我们可以在2017年的每个月以及之前的每一年运行此命令,并将结果传递到下一个命令
将帖子设置为草稿,我们可以使用wp post update 123
其中123是要更改的帖子的ID
wp post update 123 --post_status="draft"
将两者结合在一起,让我们把2016年的所有职位都定为草案:
wp post update $(wp post list --year="2016" --format=ids) --post_status="draft"
2015年:
wp post update $(wp post list --year="2015" --format=ids) --post_status="draft"
2014年:
wp post update $(wp post list --year="2014" --format=ids) --post_status="draft"
等
一般说明您将希望通过WP CLI执行此操作,在每个admin_init
钩子会减慢速度,如果它不能在时间限制之前完成它所做的事情,你的站点将永远不会加载WP Admin查询,这些查询对你的站点来说是有害的,并且会破坏你的数据库,或者触发内存不足警告。始终以100或更少的数量批量获取帖子。您始终可以运行第二个和第三个查询,只是不要同时获取它们,永远不要在中修改文件wp-includes
或wp-admin
. WP更新时,您的所有更改都将被覆盖。这是灾难的秘诀。2012年,一家网站因发布客户数据而遭到黑客攻击,公司因此被罚款数百万美元,因为他们修改了WP Core而不是使用主题和插件,然后无法更新以获得新的安全补丁,并认为这没什么大不了的WP_Query
而不是get_posts
, 默认情况下,它使用缓存,更接近真实的后期循环缩进,并获得一个编辑器来为您缩进,它将解决整个类别的错误和错误。您问了一个XY问题,您提出了一个问题的解决方案,但不知道如何实现它,还问了如何实现解决方案。你应该问一下如何解决这个问题,如果你问了,一整张可能的答案列表可能已经贴出来了,但现在还不能。E、 g.使用pre_get_posts
在2017年4月之前隐藏帖子(这解决了你的问题,但不是你想要的)