CMS
WordPress VIP Install
Ship the puzzle embed on WordPress VIP — code review, allowed scripts, and deployment-safe patterns.
WordPress VIP is managed WordPress for high-traffic publishers — code review, security scanning, and deployment pipelines. The puzzle embed is still one script tag; the difference is how you ship it through VIP’s workflow.
What you are shipping
A single external script load — no new PHP dependencies, no Composer packages, no database migrations on your side:
<script src="https://newsroompuzzles.com/embed.js?site=yourpaper.com&game=sudoku"></script>
For code review, note: script loads from newsroompuzzles.com, posts anonymous JSON events to
https://newsroompuzzles.com/api/events, uses Shadow DOM, no cookies, no reader PII.
Recommended pattern: theme template partial
Add a reusable partial in your VIP theme repo rather than pasting into post content:
@
<div class="puzzle-embed">
<script src="https://newsroompuzzles.com/embed.js?site=yourpaper.com&game=sudoku&flat=1"></script>
</div>
Include it from 404.php, a page template, or a block pattern registration. Child themes or a dedicated VIP client mu-plugin are both acceptable — follow your org’s standard.
Block editor option
Editors can use a Custom HTML block on VIP if your tenant allows unfiltered HTML for authorized roles. Many VIP shops prefer template-level injection so editors cannot paste arbitrary scripts in posts. See the standard WordPress guide for block editor steps.
Code review checklist
Include this in your VIP pull request description:
- External origin:
https://newsroompuzzles.com(script + XHR/fetch to same origin) - No inline JavaScript required
- CSP addition if enforced:
script-srcandconnect-srcfornewsroompuzzles.com site=parameter hard-coded or passed from site option — must match production domain- Widget isolated via Shadow DOM — minimal CSS collision risk
Environments
Use your production domain in site= on production only.
For develop/staging, either omit the embed or use a staging domain string so analytics stay separate.
VIP’s WP_ENV constant is a good gate:
if ( defined( 'VIP_GO_APP_ENVIRONMENT' ) && 'production' === VIP_GO_APP_ENVIRONMENT ) {
// output embed partial
}
Multiple games
Pass game= as a partial argument or block attribute — sudoku, akari, wordsearch, hangman, memory, game2048. Word games support pack=. Full reference.