{"id":10553,"date":"2026-05-16T06:30:05","date_gmt":"2026-05-15T22:30:05","guid":{"rendered":"https:\/\/aeosub.com\/jotcast-live-chats\/"},"modified":"2026-05-16T06:30:05","modified_gmt":"2026-05-15T22:30:05","slug":"jotcast-live-chats","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/jotcast-live-chats\/","title":{"rendered":"JotCast Live Chats"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/jotcast-live-chats\/assets\/banner-772x250.png?rev=3533459\" alt=\"JotCast Live Chats\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/jotcast-live-chats\/assets\/icon-256x256.png?rev=3533459\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/jotcast\/\" target=\"_blank\" rel=\"noopener\">jotcast<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.0.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">5.0 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-15 10:17pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/jotcast-live-chats\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Automatically log your WordPress users into JotCast live chats. Zero-click single sign-on with membership gating and role-based access control.<\/div>\n<p>JotCast Live Chats connects your WordPress site to <a href=\"https:\/\/www.jotcast.com\" rel=\"nofollow ugc noopener\" target=\"_blank\">JotCast<\/a> live chat, enabling zero-click single sign-on for your users. When a logged-in WordPress user visits a page with a JotCast chat embed, they are automatically signed in using their WordPress display name. No extra accounts, no login buttons, no redirects.<\/p>\n<p><strong>Features:<\/strong><\/p>\n<ul>\n<li><strong>Zero-click SSO<\/strong> \u2014 WordPress users are automatically authenticated in JotCast chats with no additional steps.<\/li>\n<li><strong>Chat visibility control<\/strong> \u2014 Restrict who can see chats on your site based on WordPress role: everyone, logged-in users only, subscribers and above, or administrators only.<\/li>\n<li><strong>Membership gating<\/strong> \u2014 Use the <code>jotcast_user_is_member<\/code> filter hook to define your own membership criteria. Works with any membership plugin including Groups, MemberPress, Paid Memberships Pro, WooCommerce Memberships, and custom solutions.<\/li>\n<li><strong>Secure token exchange<\/strong> \u2014 SSO keys are exchanged server-to-server using short-lived, single-use authorization codes. Your encryption key never touches the browser.<\/li>\n<li><strong>AES-256-CBC encryption<\/strong> \u2014 User data is encrypted before being passed to JotCast, ensuring secure transmission.<\/li>\n<\/ul>\n<p><strong>How it works:<\/strong><\/p>\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Settings <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> JotCast Live Chats and click &#8220;Connect to JotCast.&#8221;<\/li>\n<li>Authorize the connection with your JotCast account.<\/li>\n<li>That&#8217;s it. Your existing JotCast chat embeds will automatically log in your WordPress users.<\/li>\n<\/ol>\n<p><strong>Membership gating with custom filters:<\/strong><\/p>\n<p>If you want to restrict certain JotCast chats to paying members, you can define your own membership logic using the <code>jotcast_user_is_member<\/code> filter. Add this to your theme&#8217;s <code>functions.php<\/code> or a custom plugin:<\/p>\n<pre><code>add_filter('jotcast_user_is_member', function($is_member, $user) {\n    \/\/ Your custom membership check here\n    \/\/ Return true if the user is a paying member, false otherwise\n    return $is_member;\n}, 10, 2);\n<\/code><\/pre>\n<p>The result is included in the SSO token, and you can mark individual chats as &#8220;Members Only&#8221; in JotCast&#8217;s chat creation form.<\/p>\n<p><strong>Requirements:<\/strong><\/p>\n<ul>\n<li>A JotCast account (<a href=\"https:\/\/www.jotcast.com\" rel=\"nofollow ugc noopener\" target=\"_blank\">sign up at jotcast.com<\/a>)<\/li>\n<li>One or more JotCast chat embeds on your WordPress site<\/li>\n<li>PHP 7.4 or higher with the OpenSSL extension<\/li>\n<\/ul>\n<h3>External services<\/h3>\n<p>This plugin connects to the JotCast service (https:\/\/www.jotcast.com) to provide live chat functionality with automatic single sign-on for your WordPress users.<\/p>\n<p><strong>When the plugin is first connected:<\/strong><br \/>\nA one-time server-to-server request is made to JotCast to exchange a short-lived authorization code for an SSO encryption key. Your site URL and site name are sent during this process.<\/p>\n<p><strong>On every page load that contains a JotCast chat embed:<\/strong><br \/>\nThe plugin encrypts the logged-in user&#8217;s display name, email address, profile picture URL, and membership status using AES-256-CBC, and appends the encrypted token to the JotCast embed script URL. This data is sent to JotCast so the user can be automatically signed into the chat. No data is sent for users who are not logged in.<\/p>\n<ul>\n<li>Service: <a href=\"https:\/\/www.jotcast.com\" rel=\"nofollow ugc noopener\" target=\"_blank\">JotCast<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/www.jotcast.com\/terms.html\" rel=\"nofollow ugc noopener\" target=\"_blank\">https:\/\/www.jotcast.com\/terms.html<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.jotcast.com\/privacy.html\" rel=\"nofollow ugc noopener\" target=\"_blank\">https:\/\/www.jotcast.com\/privacy.html<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Automatically log your WordPress users into JotCast live chats. Zero-click single sign-on with membership gating and role-based access control.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[885,618,761,886,887,555],"class_list":["post-10553","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-group-chat","tag-live-chat","tag-membership","tag-moderated-chat","tag-sso","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10553"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10553\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}