-
Notifications
You must be signed in to change notification settings - Fork 58
feat(content-gate): content rules #4265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(content-gate): content rules #4265
Conversation
…t-gate-restriction-control--access-rules
* feat: add content gate settings skeleton * fix: typescript * fix: lint * feat: read content gates data from array * feat: render content gates from array * feat: add content rules section * fix: typescript errors * fix: add missing module * fix: typescript errors * fix: add missing module * fix: gate type * fix: revert type declaration --------- Co-authored-by: Rasmy Nguyen <[email protected]>
…to feat/content-gate-restriction-control--content-rules
…to feat/content-gate-restriction-control--content-rules
…to feat/content-gate-restriction-control--content-rules
rbcorrales
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm now getting this error when trying to save, pointing to a recently updated line:
{
"code": "qm_fatal",
"message": "Uncaught Error: Cannot access offset of type string on string in /newspack-repos/newspack-plugin/includes/wizards/audience/class-audience-content-gates.php on line 285",
"data": {
"message": "Uncaught Error: Cannot access offset of type string on string",
"file": "/newspack-repos/newspack-plugin/includes/wizards/audience/class-audience-content-gates.php",
"line": 285,
"trace": [
{
"file": "/newspack-repos/newspack-plugin/includes/wizards/audience/class-audience-content-gates.php",
"line": 270,
"function": "sanitize_access_rule",
"class": "Newspack\\Audience_Content_Gates",
"type": "->"
},
{
"file": "/newspack-repos/newspack-plugin/includes/wizards/audience/class-audience-content-gates.php",
"line": 237,
"function": "sanitize_rules",
"class": "Newspack\\Audience_Content_Gates",
"type": "->"
},
{
"file": "/var/www/html/wp-includes/rest-api/class-wp-rest-request.php",
"line": 850,
"function": "sanitize_gate",
"class": "Newspack\\Audience_Content_Gates",
"type": "->"
},
...The payload looks like this:
{
"gate": {
"id": 1376,
"status": "publish",
"title": "Another Gate",
"description": "",
"metering": {
"enabled": true,
"anonymous_count": "0",
"registered_count": "0",
"period": "week"
},
"priority": 0,
"access_rules": [
"automattic.com",
{
"slug": "email_domain",
"value": "automattic.com"
}
],
"content_rules": [
[
"newspack_collection"
],
{
"slug": "post_types",
"value": [
"newspack_collection"
]
}
]
}
}|
Thanks, @rbcorrales! The sanitization hooks being incorrect (not executed at all) allowed for its logic to have a lot of inconsistencies 😅 Should be good after 3d8c23c. It's best to test with a fresh gate, as the sanitizer stored an incorrect data structure. |
rbcorrales
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @miguelpeixe for addressing all the issues!
|
Thank you for the thorough review! |
|
Hey @miguelpeixe, good job getting this PR merged! 🎉 Now, the Please check if this PR needs to be included in the "Upcoming Changes" and "Release Notes" doc. If it doesn't, simply remove the label. If it does, please add an entry to our shared document, with screenshots and testing instructions if applicable, then remove the label. Thank you! ❤️ |
# [6.28.0-alpha.1](v6.27.1...v6.28.0-alpha.1) (2025-12-11) ### Bug Fixes * **content-gating:** never gate special pages ([#4340](#4340)) ([a4dcfdd](a4dcfdd)) * **countdown-banner:** don't show on unrestricted posts ([#4349](#4349)) ([66d2c94](66d2c94)) * **indesign-export:** only register the attribute for allowed blocks ([#4330](#4330)) ([e1801cb](e1801cb)) * **my-account:** safe content argument to skip sanitization ([#4326](#4326)) ([b066de5](b066de5)) * **my-account:** set new payment method as default ([#4343](#4343)) ([6ebcaf9](6ebcaf9)) * **my-account:** support dynamic content around shortcode ([#4328](#4328)) ([36b9524](36b9524)) * **subscription-tiers-modal:** skip private products ([#4337](#4337)) ([564d803](564d803)) ### Features * **content-gate:** content rules ([#4265](#4265)) ([b5b8cd9](b5b8cd9)) * **content-gate:** implement restriction rules ([#4251](#4251)) ([4034103](4034103)) * metered content countdown banner ([#4315](#4315)) ([c9a68cc](c9a68cc)) * **payment-notice:** detect equivalent subscription ([#4333](#4333)) ([9a98889](9a98889)) * **ras:** OAuth OTP flow improvements ([#4341](#4341)) ([8b345fa](8b345fa))
|
🎉 This PR is included in version 6.28.0-alpha.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# [6.28.0](v6.27.4...v6.28.0) (2026-01-05) ### Bug Fixes * **content-gating:** never gate special pages ([#4340](#4340)) ([a4dcfdd](a4dcfdd)) * **countdown-banner:** don't show on unrestricted posts ([#4349](#4349)) ([66d2c94](66d2c94)) * **countdown-banner:** never show more views than total ([#4369](#4369)) ([0ef3a24](0ef3a24)) * **indesign-export:** only register the attribute for allowed blocks ([#4330](#4330)) ([e1801cb](e1801cb)) * **my-account:** safe content argument to skip sanitization ([#4326](#4326)) ([b066de5](b066de5)) * **my-account:** set new payment method as default ([#4343](#4343)) ([6ebcaf9](6ebcaf9)) * **my-account:** support dynamic content around shortcode ([#4328](#4328)) ([36b9524](36b9524)) * **subscription-tiers-modal:** skip private products ([#4337](#4337)) ([564d803](564d803)) ### Features * **content-gate:** content rules ([#4265](#4265)) ([b5b8cd9](b5b8cd9)) * **content-gate:** implement restriction rules ([#4251](#4251)) ([4034103](4034103)) * metered content countdown banner ([#4315](#4315)) ([c9a68cc](c9a68cc)) * **payment-notice:** detect equivalent subscription ([#4333](#4333)) ([9a98889](9a98889)) * **ras:** OAuth OTP flow improvements ([#4341](#4341)) ([8b345fa](8b345fa))
|
🎉 This PR is included in version 6.28.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
All Submissions:
Changes proposed in this Pull Request:
Implements the gate content rules and organizes content gate components.
How to test the changes in this Pull Request:
NEWSPACK_CONTENT_GATESconstant set totrueOther information: