{"id":311525,"date":"2026-05-23T16:12:17","date_gmt":"2026-05-23T16:12:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cohost\/"},"modified":"2026-05-23T16:11:43","modified_gmt":"2026-05-23T16:11:43","slug":"cohost","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cohost\/","author":23497573,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.1","stable_tag":"0.1.1","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Cohost","header_author":"Cohost","header_description":"Show your Cohost events on your own WordPress site \u2014 your branding, your domain, your audience. Embed the events list anywhere with a shortcode and click through to per-event profile pages.","assets_banners_color":"","last_updated":"2026-05-23 16:11:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/cohost.vip","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"cohost","date":"2026-05-23 16:11:43"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"cohost\/event-name":{"name":"cohost\/event-name","title":"Event name"},"cohost\/event-date":{"name":"cohost\/event-date","title":"Event date"},"cohost\/event-flyer":{"name":"cohost\/event-flyer","title":"Event flyer"},"cohost\/event-venue":{"name":"cohost\/event-venue","title":"Event venue"},"cohost\/event-summary":{"name":"cohost\/event-summary","title":"Event summary"},"cohost\/event-content":{"name":"cohost\/event-content","title":"Event content"},"cohost\/event-tickets":{"name":"cohost\/event-tickets","title":"Event tickets"}},"tagged_versions":["0.1.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[416,264130,4747,1486,4772],"plugin_category":[40],"plugin_contributors":[264131],"plugin_business_model":[],"class_list":["post-311525","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-cohost","plugin_tags-event-management","plugin_tags-events","plugin_tags-ticketing","plugin_category-calendar-and-events","plugin_contributors-cohost","plugin_committers-cohost"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/cohost.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Connect your WordPress site to your Cohost account and show upcoming events as a list, with click-through to per-event profile pages \u2014 natively in your theme. No iframes. No redirect to a third-party ticketing page.<\/p>\n\n<p>Cohost is the headless platform for event managers \u2014 events, attendees, ticketing, scanning, check-in, and workflows \u2014 and this plugin embeds your event catalog into any WordPress theme.<\/p>\n\n<p><strong>Authentication:<\/strong> API token (Bearer). OAuth support is planned.<\/p>\n\n<p><strong>Brand-aligned UI:<\/strong> uses the canonical Cohost palette (dark <code>#161616<\/code>, light <code>#F2F2F2<\/code>, accent square <code>#f97316<\/code>) and Inter typography. Easy to override from your theme.<\/p>\n\n<h3>Shortcodes<\/h3>\n\n<pre><code>[cohost_events] \u2014 events grid. All attributes are optional:\n<\/code><\/pre>\n\n<ul>\n<li><code>limit<\/code> \u2014 events per page (default 12)<\/li>\n<li><code>columns<\/code> \u2014 grid columns 1\u20136 (default 3, display only)<\/li>\n<li><code>from<\/code>, <code>to<\/code> \u2014 ISO date range (e.g. <code>from=\"2026-06-01\" to=\"2026-12-31\"<\/code>)<\/li>\n<li><code>sort<\/code>, <code>order<\/code> \u2014 e.g. <code>sort=\"startDate\" order=\"asc\"<\/code><\/li>\n<\/ul>\n\n<p>Example: <code>[cohost_events from=\"2026-06-01\" to=\"2026-12-31\" limit=\"6\" columns=\"2\"]<\/code><\/p>\n\n<pre><code>[cohost_event id=\"\u2026\"] \u2014 single event profile. **The `id` attribute accepts either an event ID or an event slug** \u2014 the Cohost API resolves both at the same endpoint, so `[cohost_event id=\"evt_abc123\"]` and `[cohost_event id=\"summer-festival-2026\"]` both work.\n<\/code><\/pre>\n\n<p>When a configured \"Events page\" exists, clicking a card navigates to <code>\/{page-slug}\/{event-id-or-slug}<\/code> and the same page renders the profile.<\/p>\n\n<h3>Brand<\/h3>\n\n<p>The plugin ships the canonical Cohost dark \"C\" app icon and dark wordmark. The accent square is always <code>#f97316<\/code>. The full Cohost brand guide is published at https:\/\/cohost.vip\/brand.<\/p>\n\n<h3>Privacy &amp; data<\/h3>\n\n<p>This plugin makes outbound HTTP requests to two Cohost-operated services:<\/p>\n\n<ol>\n<li><p><strong>Cohost API<\/strong> (default <code>https:\/\/api.cohost.vip\/v1<\/code>) \u2014 fetches the events the site displays. Each request includes the Bearer API token configured in <strong>Cohost \u2192 Settings<\/strong>. No user data leaves your site; only your token is sent. The base URL is configurable for self-hosted or staging Cohost environments.<\/p><\/li>\n<li><p><strong>Cohost templates manifest<\/strong> (default <code>https:\/\/templates.cohost.vip\/wp\/templates.json<\/code>) \u2014 fetched when an admin opens the <strong>Cohost \u2192 Templates<\/strong> page. Returns a list of starter layouts the admin can apply. No user data is sent. The URL is configurable under Settings \u2192 Advanced.<\/p><\/li>\n<\/ol>\n\n<p>The plugin does not:<\/p>\n\n<ul>\n<li>Track end-users or store cookies.<\/li>\n<li>Send page-view analytics, telemetry, or installation pings.<\/li>\n<li>Embed third-party scripts on the public-facing site.<\/li>\n<\/ul>\n\n<p>The plugin caches API responses in WP transients (60-second TTL for events, 15-minute TTL for templates) to minimize outbound traffic. All cached data is removed when the plugin is uninstalled.<\/p>\n\n<p>For Cohost's privacy policy covering data on the Cohost side, see https:\/\/cohost.vip\/legal\/privacy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to \/wp-content\/plugins\/ (or upload the zip via Plugins \u2192 Add New).<\/li>\n<li>Activate it in WP Admin \u2192 Plugins.<\/li>\n<li>Open Cohost in the admin menu (or Settings \u2192 Cohost).<\/li>\n<li>Paste your Cohost API token and save.<\/li>\n<li>Pick the WordPress page that will host the events list and add <code>[cohost_events]<\/code> to it.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix privacy policy URL.<\/li>\n<li>Bump \"Tested up to\" to 7.0.<\/li>\n<li>Remove <code>?cohost_event=<\/code> query-string fallback for event profiles \u2014 profiles now route exclusively through the registered rewrite rule (<code>cohost_event_id<\/code> query var), eliminating the unauthenticated <code>$_GET<\/code> read flagged in review. Event profiles now require pretty permalinks; the settings page shows a warning if WordPress is on \"Plain\" permalinks and event cards render unlinked in that case.<\/li>\n<li>Replace <code>$_GET<\/code>-based admin notice flags with one-shot user-scoped transients (settings page + templates page). No <code>$_GET<\/code>\/<code>$_POST<\/code> reads happen outside nonce-verified handlers.<\/li>\n<li>Escape rendered event content blocks via <code>wp_kses_post()<\/code> on the front-end profile template; drop the silencing <code>phpcs:ignore<\/code>.<\/li>\n<li>Escape the concatenated \"View page\" link in template-applied admin notices via <code>wp_kses()<\/code> with an explicit allowed-HTML allowlist.<\/li>\n<li>Prefix <code>uninstall.php<\/code> locals (<code>$cohost_wp_options<\/code>, <code>$cohost_wp_option<\/code>) so they don't trip Plugin Check's PrefixAllGlobals scanner.<\/li>\n<li>Annotate the two intentional bulk-transient-purge <code>$wpdb-&gt;query()<\/code> calls (API client + uninstall) with explicit <code>phpcs:ignore<\/code> and rationale.<\/li>\n<li>Suppress PrefixAllGlobals file-wide in the two included template files, where locals are template-scoped (not globals) but the scanner can't tell.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Events list + event profile shortcodes.<\/li>\n<li>Filters: <code>limit<\/code>, <code>columns<\/code>, <code>from<\/code>, <code>to<\/code>, <code>sort<\/code>, <code>order<\/code>.<\/li>\n<li><code>[cohost_event]<\/code> accepts ID or slug.<\/li>\n<li>API token authentication.<\/li>\n<li>Pretty URLs via rewrite rule.<\/li>\n<li>Branded admin chrome and brand-aligned frontend styles.<\/li>\n<\/ul>","raw_excerpt":"Show your Cohost events on your own WordPress site \u2014 your branding, your domain, your audience.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=311525"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cohost"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311525"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311525"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311525"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311525"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311525"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}