[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2MpRLSLSQ2lA1mDnmJDibavqglyA2h3yD-pDmPURR6M":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"pixypuala","Pixy Puala","https:\u002F\u002Fprofiles.wordpress.org\u002Fpixypuala\u002F",2,0,100,30,94,"2026-04-05T02:37:46.098Z",[14,35],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":8,"downloaded":20,"rating":8,"num_ratings":8,"last_updated":21,"tested_up_to":22,"requires_at_least":23,"requires_php":24,"tags":25,"homepage":31,"download_link":32,"security_score":9,"vuln_count":8,"unpatched_count":8,"last_vuln_date":33,"fetched_at":34},"secure-role-restricted-draft-previews","Secure Role-Restricted Draft Previews","1.0.1","\u003Cp>\u003Cstrong>Why this plugin?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WordPress core preview links work well for editors, and \u003Cem>Public Post Preview\u003C\u002Fem> shares via anonymous nonces.\u003Cbr \u002F>\nThis plugin adds a missing middle ground: \u003Cstrong>draft previews that are secured by authentication and access control\u003Cbr \u002F>\nlists (ACLs)\u003C\u002Fstrong> — role-based, user-specific, or per-email tokens — plus analytics and a one-click revoke-all.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Universal Compatibility\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Works seamlessly with:\u003Cbr \u002F>\n* Full Site Editing (FSE) themes\u003Cbr \u002F>\n* Block themes (modern WordPress)\u003Cbr \u002F>\n* Classic PHP-based themes\u003Cbr \u002F>\n* All page builders including Elementor, WPBakery, Divi, etc.\u003Cbr \u002F>\n* WooCommerce product drafts\u003Cbr \u002F>\n* Any CSS framework including Tailwind CSS v4+\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Create expiring preview links (default 72h; configurable).\u003C\u002Fli>\n\u003Cli>Restrict by \u003Cstrong>roles\u003C\u002Fstrong>, \u003Cstrong>specific users\u003C\u002Fstrong>, or \u003Cstrong>per-email tokens\u003C\u002Fstrong> (no login for recipients).\u003C\u002Fli>\n\u003Cli>Require HTTPS for previews (on by default).\u003C\u002Fli>\n\u003Cli>Per-link analytics: allowed\u002Fdenied events, hashed IP, user agent (privacy-friendly).\u003C\u002Fli>\n\u003Cli>Meta box in the editor (Post\u002FPage by default; filterable) to generate, copy, and revoke.\u003C\u002Fli>\n\u003Cli>“Revoke All” for a post.\u003C\u002Fli>\n\u003Cli>Everything prefixed (\u003Ccode>srpl_\u003C\u002Fcode>), sanitized, and aligned with WordPress coding standards.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>How it works\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Each generated link has a unique token, TTL, and ACL:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Role-based Access:\u003C\u002Fstrong> Requires login. Only users with allowed roles can view the preview.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User-based Access:\u003C\u002Fstrong> Requires login. Only specific user IDs can access the preview.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Email Token Access:\u003C\u002Fstrong> No login required. Recipients receive unique URLs with email verification tokens.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>When a link is visited, SRPL validates the token, expiry, and ACL, then renders the draft with your theme’s header\u002Ffooter. Events are logged (when enabled) to a small custom table (\u003Ccode>wp_srpl_events\u003C\u002Fcode>) with \u003Cstrong>hashed IP\u003C\u002Fstrong> for privacy.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Privacy\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>IPs are hashed using \u003Ccode>hash_hmac(sha256, ip, wp_salt('auth'))\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>You can disable analytics entirely under \u003Cstrong>Settings \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Secure Previews\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Developer Friendly\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Fully documented filters and actions\u003C\u002Fli>\n\u003Cli>Clean, object-oriented codebase\u003C\u002Fli>\n\u003Cli>PSR-4 autoloading\u003C\u002Fli>\n\u003Cli>Extensive inline documentation\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Developer Documentation\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Filters\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>srpl_supported_post_types\u003C\u002Fcode> – Modify post types that support preview links\u003C\u002Fli>\n\u003Cli>\u003Ccode>srpl_default_ttl_hours\u003C\u002Fcode> – Change default expiration time (in hours)\u003C\u002Fli>\n\u003Cli>\u003Ccode>srpl_force_ssl\u003C\u002Fcode> – Control whether previews are forced to use HTTPS\u003C\u002Fli>\n\u003Cli>\u003Ccode>srpl_analytics_enabled\u003C\u002Fcode> – Enable or disable analytics collection\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Functions\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>LinkManager::create($post_id, $args)\u003C\u002Fcode> – Create a new preview link\u003C\u002Fli>\n\u003Cli>\u003Ccode>LinkManager::revoke($link_id)\u003C\u002Fcode> – Revoke a specific link\u003C\u002Fli>\n\u003Cli>\u003Ccode>LinkManager::revoke_all_for_post($post_id)\u003C\u002Fcode> – Revoke all links for a post\u003C\u002Fli>\n\u003Cli>\u003Ccode>LinkManager::find_by_token($token)\u003C\u002Fcode> – Find a link by its token\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Database Structure\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Post Meta for Links: _srpl_token, _srpl_mode, _srpl_roles, _srpl_users, _srpl_emails, _srpl_expires, _srpl_revoked, _srpl_hits, _srpl_last_access\u003C\u002Fli>\n\u003Cli>Analytics Table: wp_srpl_events (link_id, post_id, user_id, outcome, ip_hash, ua, created_at)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is free software, licensed under the GPL v2 or later.\u003C\u002Fp>\n","Generate secure, expiring preview URLs for drafts with role\u002Fuser restrictions. Compatible with FSE, Block Themes, and Classic Themes.",229,"2025-10-02T15:00:00.000Z","6.8.5","6.4","8.1",[26,27,28,29,30],"access-control","drafts","preview","roles","security","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsecure-role-restricted-draft-previews\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsecure-role-restricted-draft-previews.1.0.1.zip",null,"2026-03-15T15:16:48.613Z",{"slug":36,"name":37,"version":38,"author":5,"author_profile":6,"description":39,"short_description":40,"active_installs":8,"downloaded":41,"rating":8,"num_ratings":8,"last_updated":42,"tested_up_to":22,"requires_at_least":23,"requires_php":24,"tags":43,"homepage":49,"download_link":50,"security_score":9,"vuln_count":8,"unpatched_count":8,"last_vuln_date":33,"fetched_at":51},"sidebar-diff-revisions-viewer","Sidebar Diff Revisions Viewer","1.0.2","\u003Cp>\u003Cstrong>Sidebar Diff\u003C\u002Fstrong> brings revision comparisons directly into the editor so you don’t have to leave your flow.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Always-visible panel in the editor sidebar\u003C\u002Fli>\n\u003Cli>Live comparison of your current edits vs. last saved copy\u003C\u002Fli>\n\u003Cli>Optionally compare against any revision from the dropdown\u003C\u002Fli>\n\u003Cli>Per-block grouping with per-paragraph highlights (insertions and deletions)\u003C\u002Fli>\n\u003Cli>Zero front‑end impact; editor-only assets\u003C\u002Fli>\n\u003Cli>Improved diff highlighting with color-coded line indicators\u003C\u002Fli>\n\u003Cli>Dark mode support for WordPress 6.8+ compatibility\u003C\u002Fli>\n\u003Cli>Responsive design optimized for different screen sizes\u003C\u002Fli>\n\u003Cli>Keyboard shortcuts (Ctrl+D\u002FCmd+D) to toggle diff panel quickly\u003C\u002Fli>\n\u003Cli>Performance optimizations with lazy loading and debounced calculations\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Why this isn’t a duplicate:\u003C\u002Fstrong> Existing revision\u002Fworkflow plugins (e.g., PublishPress Revisions) provide queues and separate compare screens. Sidebar Diff embeds an always-visible diff inspector \u003Cstrong>inside the editor sidebar\u003C\u002Fstrong> for continuous awareness.\u003C\u002Fp>\n\u003Ch3>Privacy\u003C\u002Fh3>\n\u003Cp>The plugin does not transmit data to third parties, set cookies, or track users. Editor-only scripts run for logged-in users with edit capabilities.\u003C\u002Fp>\n","Adds a persistent diff viewer to the Block Editor sidebar, showing live changes against the last saved revision with per-block highlights.",256,"",[44,45,46,47,48],"block-editor","compare","diff","revisions","workflow","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsidebar-diff-revisions-viewer\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsidebar-diff-revisions-viewer.1.0.2.zip","2026-03-15T10:48:56.248Z"]