Release May 18#4741
Conversation
…a for logged-in readers
…PI looks prohibitively messy
…er template part switch (#4642)
…4705) Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Alpha release May 07
# [6.40.0-alpha.1](v6.39.1...v6.40.0-alpha.1) (2026-05-07) ### Bug Fixes * **access-control:** allow `0` member limit values to be shown ([#4670](#4670)) ([b7ea1e3](b7ea1e3)) * **access-control:** allow access rules with `supports_anonymous` to evaluate anonymous readers ([#4695](#4695)) ([3219d63](3219d63)) * **access-control:** bump content rule suggestion limit to 100 ([#4669](#4669)) ([64629eb](64629eb)) * **access-control:** ignore content rules with empty value ([#4675](#4675)) ([c01e97d](c01e97d)) * add `use` statements for clarity ([b0074c0](b0074c0)) * add 30s timeout to v2 invisible token acquisition to prevent hang ([8fd1a17](8fd1a17)) * add isolated flag to v2 invisible widget to prevent interference ([9cfcc30](9cfcc30)) * address potential race condition on multiple registrations with same email ([4fbb990](4fbb990)) * **advertising:** toggle spacing under category autocomplete ([1c65593](1c65593)) * **block-theme:** ensure Overlay Menu block panel opens in editor after template part switch ([#4642](#4642)) ([e45cfd0](e45cfd0)) * **campaigns:** remove wrapper div around add campaign modal input ([#4705](#4705)) ([e04d4af](e04d4af)) * centralize, normalize definition of `$referer` ([e38a94f](e38a94f)) * condition config output on RAS ([22c87af](22c87af)) * condition reCAPTCHA v3 actions on their `ready()` ([a70d5ff](a70d5ff)) * **content-gate:** pass redirectToLayout explicitly on Save ([#4702](#4702)) ([a95cd4d](a95cd4d)) * ensure idempotency by making sure callers get current reader data for logged-in readers ([be59918](be59918)) * gracefully reject calls if essential config is missing ([dd4c46b](dd4c46b)) * **indesign:** exclude rich media blocks from export output ([#4614](#4614)) ([6e45232](6e45232)) * make endpoint available only when RAS is enabled, per Copilot ([18de923](18de923)) * **memberships:** prevent duplicate teams on stripped-meta renewals ([#4661](#4661)) ([84f6c99](84f6c99)) * merge into existing `reader` now that we are out of POC ([3200cc0](3200cc0)) * move grecaptcha.execute inside try block to prevent Promise leak ([f224df8](f224df8)) * move reCAPTCHA behind rate limiting to protect metered service from floods ([0ec69a2](0ec69a2)) * **recaptcha:** skip script registration on TEC Community Events pages ([#4666](#4666)) ([d9a57c5](d9a57c5)) * reject Promise and provide helpful error if reCAPTCHA not happy ([099a109](099a109)) * send nonce, if available, with registration request ([ab57d81](ab57d81)) * textarea support ([8676e2d](8676e2d)) * use returned status rather than hardcoded value ([ea9af30](ea9af30)) * use server-side email, not submitted email, for logged-in users ([56e699f](56e699f)) ### Features * **access-control:** add Specific posts content rule ([#4674](#4674)) ([6735309](6735309)) * **access-control:** auto-signup on renewal only for already subscribed lists ([#4621](#4621)) ([23934c6](23934c6)) * **access-control:** human-readable group subscription names ([#4667](#4667)) ([a817304](a817304)) * **access-control:** tweaks to Access Control UI components ([#4659](#4659)) ([3c08943](3c08943)) * add block theme support to lite site ([#4628](#4628)) ([71632b9](71632b9)) * add overridable registration key methods to Integration base class ([2b4d04f](2b4d04f)) * add reCAPTCHA v2 invisible support to register() ([60b0e77](60b0e77)) * **block-theme:** add size options to the Overlay Menu ([#4652](#4652)) ([3b11b75](3b11b75)) * **block-theme:** move co-authors RSS feed code to the Newspack Plugin ([#4629](#4629)) ([50a160c](50a160c)) * **co-authors:** support CAP core entity store alongside legacy store ([#4673](#4673)) ([b80c49a](b80c49a)) * **components:** addToolbarBackButton util in newspack-components ([#4619](#4619)) ([ec36aa3](ec36aa3)) * **content-gate:** expose institutional IP allowlist endpoint ([#4685](#4685)) ([c6a054a](c6a054a)) * **data-events:** woo transactional events ([#4687](#4687)) ([544d718](544d718)) * delegate key generation and validation to Integration instances ([6aba746](6aba746)) * initial reader registration API rollup from working branch ([0250b2a](0250b2a)) * **integrations:** add activity logs view ([#4671](#4671)) ([fb98062](fb98062)) * **integrations:** add content gate metadata ([#4605](#4605)) ([dcd2a09](dcd2a09)) * **integrations:** contact cron for push and pull ([#4608](#4608)) ([29e6668](29e6668)) * **integrations:** redesign configure view ([#4668](#4668)) ([472dd06](472dd06)) * **integrations:** redesign dashboard with CardFeature grid ([#4665](#4665)) ([d20aae8](d20aae8)) * localize reCAPTCHA site key and version for both v2 and v3 ([56ba6ea](56ba6ea)) * more options for registration ([4c23648](4c23648)) * **newspack-ui:** refactor newsletter signup form with Newspack UI utilities ([#4491](#4491)) ([1859473](1859473)) * **reader-activation:** configure ESP incoming fields from schema ([#4676](#4676)) ([8bc84cc](8bc84cc)) * **reader-activation:** frontend registration API for integrations ([2d7a1bc](2d7a1bc)) * **settings:** Experimental Tools framework (NPPM-2692) ([#4591](#4591)) ([5a300eb](5a300eb)) * trigger a hook and invoke an integration callback when logged in user registers ([167383a](167383a))
* feat(group-subs): add invite-link constants Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): add get_link_invite helper Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): add get_link_invite_url helper Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): add generate_link_invite Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): add validate_link_invite Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(group-subs): allow custom redirect target in invite flow Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): map link-invite result codes to notices Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): process invite-link clicks via template_redirect Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): avoid double-encoding redirect on auth bounce Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): rest endpoint to generate invite links Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(ui): add copy icon Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ui): use recognizable copy icon SVG Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): render invite-link UI in members modal Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(group-subs): handle copy/create invite-link flows in JS Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): self-managed snackbar animation in invite-link UI Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): guard already-member, gate on active, use redirect_to Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): correctly encode invite-link redirect bounce URL Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): set REST status on invite-link WP_Errors Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(group-subs): show invite-link notices on non-WC pages Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(access-control): ensure notices appear on both accound and non-account pages * fix: adjust UI for invite links * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: copilot review feedback * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * refactor(group-subs): reuse Newspack UI notices for invite-link snackbars Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(group-subs): explain rawurlencode on invite-link redirect Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * style(group-subs): use spacer token for invite-link input margin * refactor: remove expirations from invite links * refactor: move link result message handling to existing scope * feat: rebuild invite link UI around single button * fix(group-subs): address PR review blockers and dead code Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(group-subs): clean up notices, JS polish, test fixtures Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(group-subs): integration tests for process_link_invite_request Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: dropdown-based UI for invite links * fix: js improvements * fix: code review feedback * chore: bail early if no meta update needed * test(group-subs): coverage for delete_link_invite endpoint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): address round-3 review blockers and bugs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(group-subs): cover remaining process_link_invite_request branches Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(group-subs): isolate invite-link from email-invite state Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(group-subs): unify invite flows, drop deferred state Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(group-subs): sweep tests after invite-flow refactor Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(group-subs): drop $message param from redirect_with_result Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: default redirect to `edit-account` endpoint to avoid double redirect * chore: add logging for errors * test(group-subs): integration coverage for invite request flows Adds 7 PHPUnit tests filling the gaps flagged in the round-5 review: - process_invite_request(): invalid-link, Case 1 happy path, Case 1 email mismatch, Case 2 existing-user bounce, Case 3 new-user registration. - process_link_invite_request(): invalid-subscription-id error path. - accept_invite(): short-circuit-to-true for an already-member visitor who re-clicks a stale/invalid invite key. All 95 group-subscription tests pass. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Thomas Guillot <thomas@automattic.com>
# [6.40.0-alpha.3](v6.40.0-alpha.2...v6.40.0-alpha.3) (2026-05-12) ### Features * **group-subs:** shareable invite links ([#4704](#4704)) ([f5cafdb](f5cafdb))
* feat(group-subs): polish invite-links UX in My Account * fix(group-subs): align empty-state row height in invite tables * fix(group-subs): address review feedback on invite-links polish * fix(group-subs): floor sub-minute expiration to avoid overstating * fix(group-subs): no-JS panel fallback and i18n number formatting * test(group-subs): guard expiration-label tests with try/finally * fix(group-subs): reduced-motion support and performance.now fallback * fix(ui): add ARIA tab semantics and keyboard nav to segmented-control * fix(group-subs): address invite-links review feedback * test(group-subs): cover negative and i18n cases for expiration label * refactor(group-subs): simplify clipboard failure to a plain snackbar
# [6.40.0-alpha.4](v6.40.0-alpha.3...v6.40.0-alpha.4) (2026-05-14) ### Features * **group-subs:** polish invite-links UX in My Account ([#4719](#4719)) ([4044541](4044541))
There was a problem hiding this comment.
Pull request overview
This “Release May 18” PR bundles a broad set of plugin updates across Reader Activation, Audience Integrations, Content Gates, UI components, blocks, mocks/tests, and dependency cleanup.
Changes:
- Adds/expands Audience Integrations UI (card-based settings, configure view, logs view) and corresponding REST API endpoints.
- Enhances Reader Activation UX/APIs (frontend
register()with reCAPTCHA v2/v3 support, newsletter signup UI tweaks, TEC Community Events reCAPTCHA compatibility). - Extends UI/block capabilities (Overlay Menu panel width/full-screen options, segmented-control a11y, utility classes, editor toolbar back button) and removes
php-loremipsumdependency by generating lipsum internally.
Reviewed changes
Copilot reviewed 124 out of 127 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unit-tests/recaptcha.php | Adds unit tests for reCAPTCHA script enqueue + TEC Community Events bail-out. |
| tests/unit-tests/reader-activation-sync/class-test-grouped-metadata.php | Adds unit tests for grouped metadata field output and filters. |
| tests/unit-tests/plugins/teams-for-memberships.php | Adds tests for Teams renewal meta restoration behavior. |
| tests/unit-tests/plugins/co-authors-plus-rss-feed.php | Adds tests for Co-Authors Plus author output in feeds. |
| tests/unit-tests/integrations/class-test-promoted-fields.php | Adds tests for ActiveCampaign pipe-delimited multiselect parsing. |
| tests/unit-tests/class-test-overlay-menu-panel-block.php | Adds tests for overlay menu panel render classes (direction/width/fullscreen/injection). |
| tests/mocks/wc-mocks.php | Extends WC mocks for order/subscription fields and WCS helpers. |
| tests/mocks/tec-community-events-mocks.php | Adds TEC Community Events helper mock for tests. |
| tests/mocks/teams-for-memberships-skyverge-subscriptions-mock.php | Adds SkyVerge Teams Subscriptions integration mock. |
| tests/mocks/teams-for-memberships-mocks.php | Adds mocks for Teams renewal meta restoration tests. |
| tests/mocks/newsletters-mocks.php | Extends newsletters mock to support fixtures, return overrides, and throws. |
| tests/mocks/co-authors-plus-mocks.php | Adds get_coauthors() mock for feed tests. |
| src/wizards/wizards-tab.tsx | Makes title optional and conditionally renders <h1>. |
| src/wizards/newspack/views/settings/sections.tsx | Registers “experimental-tools” settings section when present. |
| src/wizards/newspack/views/settings/experimental-tools/types.ts | Defines types for experimental tools UI. |
| src/wizards/newspack/views/settings/experimental-tools/style.scss | Adds styling for experimental tools configuration + logs UI. |
| src/wizards/newspack/views/settings/experimental-tools/index.tsx | Implements Experimental Tools list + configure routing and API calls. |
| src/wizards/newspack/views/settings/experimental-tools/enable-modal.tsx | Adds confirmation modal for enabling a tool. |
| src/wizards/audience/views/integrations/style.scss | Styles integrations logs DataViews controls. |
| src/wizards/audience/views/integrations/settings-section.js | Reworks integrations settings landing UI to CardFeature grid + setup flow. |
| src/wizards/audience/views/integrations/settings-field.js | Normalizes metadata options shape; uses TextareaControl for textarea fields. |
| src/wizards/audience/views/integrations/logs-view.js | Adds logs table view backed by REST endpoint. |
| src/wizards/audience/views/integrations/index.js | Adds routing for configure and logs views; refactors shared props. |
| src/wizards/audience/views/integrations/configure-view.scss | Adds configure view alignment and accordion border overrides. |
| src/wizards/audience/views/integrations/configure-view.js | Adds configure view layout + header state handling and grouped settings. |
| src/wizards/audience/views/content-gates/edit/registration.tsx | Reorders verification toggle relative to metering UI. |
| src/wizards/audience/views/content-gates/edit/index.tsx | Adds “Edit layout” actions (with create+redirect flow) and header click behavior. |
| src/wizards/audience/views/content-gates/edit/custom-access.tsx | Reorders access rules vs metering block. |
| src/wizards/audience/views/content-gates/edit/content-rule-control-tokenfield.tsx | Increases suggestions/hydration page size; improves warning messages. |
| src/wizards/audience/views/content-gates/content-gate-settings.tsx | Moves layout edit links into action menu groups. |
| src/wizards/audience/views/campaigns/campaigns/index.js | Replaces ref-based focus with deterministic id lookup for modal input. |
| src/wizards/advertising/style.scss | Adds spacing rule between category autocomplete and toggle control. |
| src/reader-activation/index.js | Adds frontend register() API and v2 invisible token acquisition helper. |
| src/reader-activation-newsletters/style.scss | Removes/relies less on legacy styling for newsletter list/see-all/button overrides. |
| src/reader-activation-newsletters/newsletters-modal.js | Updates selector for displaying populated email in modal (strong.email). |
| src/reader-activation-newsletters/newsletters-form.js | Updates “See all” behavior to hide divider/button via hidden class. |
| src/newspack-ui/UTILITY_CLASSES.md | Documents Newspack UI utility classes. |
| src/newspack-ui/scss/variables/_colors.scss | Adds divider gradient CSS variables. |
| src/newspack-ui/scss/elements/misc/_visibility.scss | Adds .hidden and .overflow-hidden utility classes under .newspack-ui. |
| src/newspack-ui/scss/elements/misc/_position.scss | Adds position utility classes under .newspack-ui. |
| src/newspack-ui/scss/elements/misc/_index.scss | Registers new misc utility partials. |
| src/newspack-ui/scss/elements/misc/_dividers.scss | Adds .newspack-ui__gradient-divider element styling. |
| src/newspack-ui/scss/elements/forms/_buttons.scss | Tweaks icon spacing for additional svg icons. |
| src/newspack-ui/scss/elements/_notices.scss | Raises snackbar z-index. |
| src/newspack-ui/scss/elements/_layout.scss | Adjusts loading overlay selector formatting. |
| src/newspack-ui/js/segmented-control/index.js | Improves tablist ARIA + keyboard navigation. |
| src/newspack-ui/js/notices.js | Avoids AJAX dismissal without noticeId; adds dynamic snackbar createNotice(). |
| src/my-account/v1/_subscriptions.scss | Removes responsive width override for action buttons. |
| src/my-account/v1/_group-subscriptions.scss | Reworks group subscription UI styles, adds enter animation + empty-state sizing. |
| src/content-gate/editor/post-settings.js | Mirrors PHP evaluator including specific_posts override and postId-aware matching. |
| src/content-gate/editor/editor.js | Adds editor toolbar back button via shared utils. |
| src/blocks/overlay-menu/trigger/edit.js | Keys preview toggle/subscription by parent clientId instead of inner traversal. |
| src/blocks/overlay-menu/trigger/block.json | Enables block lock support flag. |
| src/blocks/overlay-menu/style.scss | Adds panel width modifiers, fullscreen mode, breakpoint variable usage, max-width cap. |
| src/blocks/overlay-menu/preview-refs.js | Documents and updates Map keying to parent clientId. |
| src/blocks/overlay-menu/panel/edit.js | Adds fullscreen + width controls; improves toggle registration resiliency. |
| src/blocks/overlay-menu/panel/class-overlay-menu-panel-block.php | Adds server-side allowlisting for width/fullscreen classes. |
| src/blocks/overlay-menu/panel/block.json | Adds enums for direction/width, fullscreen attr, and lock support. |
| src/blocks/overlay-menu/edit.js | Subscribes/toggles preview using parent clientId. |
| src/admin/style.scss | Updates wizard header spacing and audience integrations section styling. |
| packages/components/src/utils/style.scss | Styles editor toolbar wrapper for the back button. |
| packages/components/src/utils/index.js | Exports addToolbarBackButton utility. |
| packages/components/src/utils/editor-toolbar-back-button.tsx | Implements editor toolbar back button injector. |
| packages/components/src/card/style-core.scss | Adjusts core card header layout and action styling. |
| packages/components/src/card/core-card.js | Supports grouped actions and adds headerAction button. |
| packages/components/src/card-settings-group/index.tsx | Adds header action support + separate header click vs toggle behavior. |
| packages/components/src/card-feature/style.scss | Makes CardFeature fill height and pushes actions to bottom of card. |
| packages/components/src/accordion/index.js | Improves accessibility by using details open + onToggle and adds defaultOpen. |
| newspack.php | Bumps plugin version to 6.40.0-alpha.4. |
| includes/wizards/newspack/class-newspack-settings.php | Adds “Experimental tools” tab data when tools exist. |
| includes/wizards/audience/class-audience-integrations.php | Adds REST endpoint to fetch integration logs. |
| includes/wizards/audience/class-audience-content-gates.php | Adds REST endpoint for cross-post-type post search for gating UI. |
| includes/starter_content/class-starter-content-generated.php | Replaces external lipsum generator with internal random words/paragraphs. |
| includes/reader-activation/sync/contact-metadata/class-content-gate.php | Adds content-access metadata fields based on custom-access gate evaluations. |
| includes/reader-activation/sync/class-metadata.php | Adds grouped default fields API + filter. |
| includes/reader-activation/sync/class-contact-sync.php | Adds sync payload logging and pending-retry helper methods. |
| includes/reader-activation/integrations/class-esp.php | Updates ESP integration naming/setup readiness + incoming field schema mapping. |
| includes/reader-activation/class-reader-activation.php | Adds registration script data, new newsletter signup markup, and divider/see-all UI. |
| includes/reader-activation/class-promoted-fields.php | Parses ActiveCampaign pipe-delimited list values. |
| includes/reader-activation/class-integrations.php | Adds scheduled action counting + setup metadata and existing-user registration hook. |
| includes/plugins/woocommerce/my-account/class-my-account-ui-v1.php | Adds invite-link copy strings and REST config to localized script data. |
| includes/plugins/woocommerce-subscriptions/group-subscription/class-group-subscription-api.php | Adds REST endpoints to create/delete invite links. |
| includes/plugins/co-authors-plus/class-co-authors-plus-rss-feed.php | Adds feed author filter to output all co-authors. |
| includes/plugins/class-teams-for-memberships.php | Adds filter to restore stripped team meta on renewal orders. |
| includes/optional-modules/indesign-export/class-indesign-converter.php | Adds excluded block allowlist + recursive stripping and filter for InDesign export. |
| includes/lite-site/class-lite-site.php | Uses global palette for primary color in block themes. |
| includes/data-events/README.md | Documents deprecations and adds v2 Woo order/subscription events. |
| includes/data-events/listeners.php | Dispatches new Woo order/subscription events per line item. |
| includes/data-events/class-utils.php | Adds payload builders for new Woo order/subscription events. |
| includes/content-gate/class-user-gate-access.php | Makes evaluate_gate_for_user public. |
| includes/content-gate/class-institution.php | Uses cookie helper for cache-safety check and expands inline explanation. |
| includes/content-gate/class-content-rules.php | Adds specific_posts rule and filters empty-value rules from gate meta. |
| includes/content-gate/class-content-restriction-control.php | Implements specific_posts override and fixes per-user cache keying. |
| includes/content-gate/class-content-gate.php | Redirects both gate CPT and layout CPT; adjusts redirect target based on memberships. |
| includes/content-gate/class-access-rules.php | Documents supports_anonymous and adds anonymous rule evaluator helper. |
| includes/configuration_managers/class-newspack-newsletters-configuration-manager.php | Adds centralized newsletters settings URL getter. |
| includes/class-recaptcha.php | Skips Newspack reCAPTCHA enqueue on TEC community submission pages. |
| includes/class-newspack.php | Includes reader registration + experimental tools + CAP RSS feed integration. |
| includes/class-newspack-ui.php | Updates demo content to match newsletters signup form markup. |
| composer.lock | Updates lockfile after dependency change. |
| composer.json | Removes joshtronic/php-loremipsum dependency. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| public static function get_pending_retry_user_ids() { | ||
| if ( ! function_exists( 'as_get_scheduled_actions' ) ) { | ||
| return []; | ||
| } | ||
| $actions = \as_get_scheduled_actions( | ||
| [ | ||
| 'hook' => self::RETRY_HOOK, | ||
| 'status' => \ActionScheduler_Store::STATUS_PENDING, | ||
| 'per_page' => -1, | ||
| ] | ||
| ); | ||
| $user_ids = []; | ||
| foreach ( $actions as $action ) { | ||
| $args = $action->get_args(); | ||
| if ( ! empty( $args[0]['user_id'] ) ) { | ||
| $user_ids[ (int) $args[0]['user_id'] ] = true; | ||
| } | ||
| } | ||
| return $user_ids; | ||
| } | ||
|
|
||
| /** | ||
| * Check if a user has any pending sync retries in ActionScheduler. | ||
| * | ||
| * @param int $user_id WordPress user ID. | ||
| * @return bool True if there are pending retries. | ||
| */ | ||
| public static function has_pending_retries( $user_id ) { | ||
| return isset( self::get_pending_retry_user_ids()[ (int) $user_id ] ); | ||
| } |
There was a problem hiding this comment.
@miguelpeixe looks like this feedback relates to #4608—feel free to resolve the thread or address in a follow-up PR if needed.
dkoo
left a comment
There was a problem hiding this comment.
Approving with acknowledgement of Copilot's review feedback. Pinged each PR's owner in the respective threads in case we want to tackle those in follow-up hotfixes.
|
🎉 This PR is included in version 6.40.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
A new release.