我想删除超过60天的特定帖子类型(在本例中为“vfb\\U条目”)的所有帖子。cron作业应每天运行一次。
第一步是设置cron作业。问题中的代码对于这一部分是正确的,因此它基本上复制到下面。
第二部分需要在数据库中查询条目超过60天的特定帖子类型。我们可以用get_posts()
并指定post_type
参数和date_query
论点
//* If the scheduled event got removed from the cron schedule, re-add it
if( ! wp_next_scheduled( \'wpse_213720_remove_old_entries\' ) ) {
wp_schedule_event( time(), \'daily\', \'wpse_213720_remove_old_entries\' );
}
//* Add action to hook fired by cron event
add_action( \'wpse_213720_remove_old_entries\', \'wpse_213720_remove_old_entries\' );
function wpse_213720_remove_old_entries() {
//* Get all the custom post type entries older than 60 days...
$posts = get_posts( [
\'numberposts\' => -1,
\'post_type\' => \'wpse_262471_post_type\',
\'date_query\' => [
\'before\' => date( "Y-m-d H:i:s", strtotime( \'-60 days\' ) ),
],
]);
//* ...and delete them
array_filter( function( $post ) {
wp_delete_post( $post->ID );
}, $posts );
}
以上答案直接询问
$wpdb
. 使用
get_posts()
由于各种原因,抽象性更好,包括易于阅读和将来的校对。