{"id":279426,"date":"2026-03-28T20:53:00","date_gmt":"2026-03-28T20:53:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pillarshield\/"},"modified":"2026-03-28T20:53:18","modified_gmt":"2026-03-28T20:53:18","slug":"pillarshield","status":"publish","type":"plugin","link":"https:\/\/ca-valencia.wordpress.org\/plugins\/pillarshield\/","author":39805,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.1.0","stable_tag":"0.1.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"PillarShield","header_author":"PillarShield","header_description":"Connects WordPress to PillarShield SaaS governance checks.","assets_banners_color":"","last_updated":"2026-03-28 20:53:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"pteglia","date":"2026-03-28 20:53:18"}},"upgrade_notice":{"0.1.0":"<p>Initial beta release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings \u2192 PillarShield configuration page.","2":"Block editor notice after a blocked publish.","3":"Tools \u2192 PillarShield report list for blocked content."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[14361,258885,1756,7143],"plugin_category":[44],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-279426","plugin","type-plugin","status-publish","hentry","plugin_tags-compliance","plugin_tags-governance","plugin_tags-moderation","plugin_tags-publishing","plugin_category-discussion-and-community","plugin_committers-pteglia"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/pillarshield.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PillarShield integrates WordPress with the PillarShield SaaS governance API. It runs checks at the publish boundary, blocks non\u2011compliant content, allows optional overrides, and keeps a governance record per post for reporting. You must obtain a PillarShield API key from https:\/\/pillarshield.co for the plugin to function.<\/p>\n\n<p>Key features:<\/p>\n\n<ul>\n<li>Gate governance checks on publish\/private statuses (configurable per post type).<\/li>\n<li>Optional manual checks that never block saves.<\/li>\n<li>Override workflow for privileged users.<\/li>\n<li>Governance reporting under Tools \u2192 PillarShield (blocked-at-gate items only).<\/li>\n<li>Safe storage of outcomes without raw content.<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<p>Settings \u2192 PillarShield:<\/p>\n\n<ul>\n<li><strong>API Endpoint<\/strong>: The PillarShield governance endpoint.<\/li>\n<li><strong>API Key<\/strong>: Your tenant API key (<code>psk_...<\/code>).\n\n<ul>\n<li>Get a key at https:\/\/pillarshield.co. The plugin does not perform governance checks without a valid API key.<\/li>\n<li>You can also define <code>PILLARSHIELD_API_KEY<\/code> in <code>wp-config.php<\/code> to override the stored option:\ndefine('PILLARSHIELD_API_KEY', 'psk_...');<\/li>\n<\/ul><\/li>\n<li><strong>Enable Governance<\/strong>: Turn checks on\/off.<\/li>\n<li><strong>Allow Save Without API<\/strong>: Allow publishing if the API is unavailable.<\/li>\n<li><strong>Enabled Post Types<\/strong>: Which post types are governed.<\/li>\n<li><strong>Fields per Post Type<\/strong>: Comma\u2011separated fields to scan. Supports <code>meta:KEY<\/code>.<\/li>\n<li><strong>Gate Configuration<\/strong>:\n\n<ul>\n<li><strong>Gated statuses<\/strong> (default: publish + private)<\/li>\n<li><strong>Fallback status<\/strong> (default: draft)<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p>Use the <strong>Test Connection<\/strong> button to validate API access.<\/p>\n\n<h3>Editor UX<\/h3>\n\n<p>On governed post types, a PillarShield meta box appears with:<\/p>\n\n<ul>\n<li><strong>Check PillarShield governance on this save<\/strong> (manual check)<\/li>\n<li><strong>Override PillarShield governance (save anyway)<\/strong><\/li>\n<\/ul>\n\n<p>These checkboxes do not persist \u2014 they only apply to the current save.<\/p>\n\n<h3>Permissions (Roles\/Capabilities)<\/h3>\n\n<p>PillarShield adds these capabilities:<\/p>\n\n<ul>\n<li><code>pillarshield_manage_settings<\/code> \u2014 manage settings page<\/li>\n<li><code>pillarshield_view_reports<\/code> \u2014 view reports<\/li>\n<li><code>pillarshield_manual_check<\/code> \u2014 run manual check<\/li>\n<li><code>pillarshield_override_governance<\/code> \u2014 override violations<\/li>\n<\/ul>\n\n<p>On activation, these are granted to <strong>Administrators<\/strong> only.<\/p>\n\n<p><strong>Override visibility requirement:<\/strong>\nThe Override checkbox only appears for users who have the <code>pillarshield_override_governance<\/code> capability. Editors will not see it unless you explicitly grant that capability via a role editor plugin or custom code.<\/p>\n\n<h3>Reporting<\/h3>\n\n<p>Tools \u2192 PillarShield:<\/p>\n\n<ul>\n<li>Overview of content currently blocked at the gate.<\/li>\n<li>Details page per post with block reason and metadata.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the PillarShield governance API to evaluate post content for compliance before publishing.<\/p>\n\n<p><strong>Service:<\/strong> PillarShield SaaS governance API, operated by PillarShield.\n<strong>Endpoint:<\/strong> https:\/\/api.pillarshield.co\/pillarshield-governance\/governance<\/p>\n\n<p><strong>What is sent and when:<\/strong>\nWhen a user saves a post to a gated status (by default: publish or private) on a governed post type, or manually triggers a governance check, the plugin sends a POST request containing:<\/p>\n\n<ul>\n<li>The post's configured content fields (by default: title, body, and excerpt)<\/li>\n<li>Post metadata: post type, post ID, post UUID, post URL, and target publish status<\/li>\n<li>WordPress user context: user ID and roles (no email or username is transmitted)<\/li>\n<li>The tenant API key<\/li>\n<\/ul>\n\n<p>No data is sent during autosaves, revisions, or saves to non-gated statuses. The plugin requires a valid API key obtained from https:\/\/pillarshield.co to function.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/pillarshield.co\/terms\">Terms of service<\/a><\/li>\n<li><a href=\"https:\/\/pillarshield.co\/privacy-policy\">Privacy policy<\/a><\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<p>Support and documentation: https:\/\/pillarshield.co.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>pillarshield<\/code> folder to <code>wp-content\/plugins\/<\/code> or install it as a ZIP.<\/li>\n<li>Activate <strong>PillarShield<\/strong> in Plugins \u2192 Installed Plugins.<\/li>\n<li>Go to Settings \u2192 PillarShield to configure API settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20didn%E2%80%99t%20i%20see%20a%20notice%20after%20publishing%3F\"><h3>Why didn\u2019t I see a notice after publishing?<\/h3><\/dt>\n<dd><p>The block editor uses REST saves; notices are injected into the editor UI after save. Quick Edit notices appear on the list table after inline\u2011save completes. Classic admin notices show on full page loads.<\/p><\/dd>\n<dt id=\"does%20this%20store%20my%20content%3F\"><h3>Does this store my content?<\/h3><\/dt>\n<dd><p>No. Only minimal blocked-at-gate metadata and reasons are stored locally. Content is sent to the PillarShield SaaS API for evaluation.<\/p><\/dd>\n<dt id=\"what%20post%20statuses%20are%20gated%3F\"><h3>What post statuses are gated?<\/h3><\/dt>\n<dd><p>By default <code>publish<\/code> and <code>private<\/code>, configurable per post type.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Get a PillarShield API key at https:\/\/pillarshield.co. The plugin requires a valid key to run governance checks.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\"><h3>Where can I get support?<\/h3><\/dt>\n<dd><p>Visit https:\/\/pillarshield.co.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial beta.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to the PillarShield SaaS API and enforce governance checks at publish time.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/279426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=279426"}],"author":[{"embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pteglia"}],"wp:attachment":[{"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=279426"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=279426"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=279426"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=279426"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=279426"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ca-valencia.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=279426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}