Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Example Usage: glsr_reassign_reviews(41098, [41098, 26907], 100);
- */
- function glsr_reassign_reviews(int $assignedPostId = 0, array $newAssignedPostIds = [], int $per_page = 100): void
- {
- // set_time_limit(0); // Uncomment only if necessary
- $delay_ms = 5000;
- $newAssignedPostIds = array_filter($newAssignedPostIds, 'is_numeric');
- $processed = 0;
- $resumeKey = "glsr_reassign_reviews_last_page_{$assignedPostId}";
- $stream_reviews = function (int $assignedPostId, int $start_page, int $per_page) use ($resumeKey): \Generator
- {
- $page = max(1, $start_page);
- while (true) {
- $reviews = glsr_get_reviews([
- 'assigned_posts' => $assignedPostId,
- 'orderby' => 'ID',
- 'page' => $page,
- 'per_page' => max(1, $per_page),
- ]);
- if (1 === $page && empty($reviews->reviews)) {
- break;
- }
- if ($page >= $reviews->max_num_pages) {
- break;
- }
- foreach ($reviews->reviews as $review) {
- yield $review->ID;
- }
- $page++;
- update_option($resumeKey, $page);
- }
- }
- $last_page = get_option($resumeKey, 1);
- foreach ($stream_reviews($assignedPostId, $last_page, $per_page) as $reviewId) {
- glsr_update_review($reviewId, [
- 'assigned_posts' => $newAssignedPostIds,
- ]);
- $processed++;
- if ($processed % 200 === 0) {
- glsr_log("Reassigned {$processed} reviews");
- usleep($delay_ms); // delay every 200 reviews to reduce server load
- }
- }
- glsr_log("Finished reassigning {$processed} reviews");
- delete_option($resumeKey);
- }
Advertisement
Add Comment
Please, Sign In to add comment