{"id":277540,"date":"2026-02-06T05:13:28","date_gmt":"2026-02-06T05:13:28","guid":{"rendered":"https:\/\/es-mx.wordpress.org\/plugins\/zd-zoom-embed-meeting-sdk\/"},"modified":"2026-02-06T05:14:09","modified_gmt":"2026-02-06T05:14:09","slug":"zd-embed-for-zoom-meeting-sdk","status":"publish","type":"plugin","link":"https:\/\/oci.wordpress.org\/plugins\/zd-embed-for-zoom-meeting-sdk\/","author":23438671,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.2","stable_tag":"1.1.2","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"ZD Embed for Zoom Meeting SDK","header_author":"ZDApps","header_description":"Embeds Zoom meetings inside WordPress using the Zoom Meeting SDK (Web) with secure server-side signature generation. Not affiliated with Zoom.","assets_banners_color":"afafaf","last_updated":"2026-02-06 05:14:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/zdapps.com.mx\/plugins\/zd-embed-for-zoom-meeting-sdk\/","header_author_uri":"https:\/\/zdapps.com.mx\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":189,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"zdapps","date":"2026-02-06 05:14:09"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3456221,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3456221,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3456221,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3456221,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3456221,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3456221,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3456221,"resolution":"3","location":"assets","locale":""}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[230,255326,12567,10939,853],"plugin_category":[56],"plugin_contributors":[253937],"plugin_business_model":[],"class_list":["post-277540","plugin","type-plugin","status-publish","hentry","plugin_tags-embed","plugin_tags-meeting-sdk","plugin_tags-video-conferencing","plugin_tags-webinar","plugin_tags-zoom","plugin_category-social-and-sharing","plugin_contributors-zdapps","plugin_committers-zdapps"],"banners":{"banner":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/banner-772x250.png?rev=3456221","banner_2x":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/banner-1544x500.png?rev=3456221","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/icon-128x128.png?rev=3456221","icon_2x":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/icon-256x256.png?rev=3456221","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/screenshot-1.png?rev=3456221","caption":""},{"src":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/screenshot-2.png?rev=3456221","caption":""},{"src":"https:\/\/ps.w.org\/zd-embed-for-zoom-meeting-sdk\/assets\/screenshot-3.png?rev=3456221","caption":""}],"raw_content":"<!--section=description-->\n<p>ZD Embed for Zoom Meeting SDK lets you embed a meeting experience inside WordPress pages (not an iframe). It uses the Zoom Meeting SDK (Web) and generates the required signature on your server via a protected REST endpoint.<\/p>\n\n<p>Features:\n* Custom Post Type: <strong>Zoom Rooms<\/strong> (each room has a public URL like <code>\/zoom\/my-room\/<\/code>)\n* Shortcode embedding anywhere\n* Server-side signature (JWT HS256) via REST endpoint protected by a temporary token\n* Optional \u201cLeave URL\u201d\n* Anti-cache headers for embed pages (helps prevent expired-token issues)<\/p>\n\n<p>Important notes:\n* You cannot reliably embed a standard Zoom join link in an iframe due to browser\/platform restrictions. The recommended way is the Meeting SDK.\n* By default the plugin generates <strong>attendee (role=0)<\/strong> signatures only. Host role requires additional security and is intentionally blocked.<\/p>\n\n<h3>Zoom App Setup (Meeting SDK)<\/h3>\n\n<p>To embed meetings you need a Zoom app with Meeting SDK enabled.<\/p>\n\n<p>Steps (high-level):\n1. Go to the Zoom App Marketplace and choose <strong>Develop \u2192 Build App<\/strong>.\n2. Create a <strong>General App<\/strong>.\n3. Open <strong>Embed<\/strong> and enable <strong>Meeting SDK<\/strong>.\n4. Copy your credentials (Client ID\/Secret or SDK Key\/Secret) from <strong>App Credentials<\/strong>.<\/p>\n\n<p>Official documentation:\n* Meeting SDK - Create your app\n* Meeting SDK - Authentication \/ signature<\/p>\n\n<p>(These links are also included inside the plugin admin screen.)<\/p>\n\n<h3>Shortcode<\/h3>\n\n<p>Use this shortcode in any post\/page:\n    [zd_zoom_embed meeting_number=\"123456789\" passcode=\"ABC123\" height=\"700\" auto_join=\"1\" user_name=\"Guest\"]<\/p>\n\n<p>Arguments:\n* <code>meeting_number<\/code> (required)\n* <code>passcode<\/code> (optional)\n* <code>height<\/code> (default 700)\n* <code>auto_join<\/code> (default 1)\n* <code>user_name<\/code> (optional)<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP in <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, then activate it.<\/li>\n<li>Go to <strong>Settings \u2192 ZD Zoom Embed<\/strong> and set your SDK Key\/Secret.\nRecommended (more secure): add them to <code>wp-config.php<\/code>:\n   <code>define('ZDZE_SDK_KEY', 'YOUR_SDK_KEY_OR_CLIENT_ID');\ndefine('ZDZE_SDK_SECRET', 'YOUR_SDK_SECRET_OR_CLIENT_SECRET');<\/code><\/li>\n<li>Create a <strong>Zoom Room<\/strong> in the WordPress admin and enter:\n\n<ul>\n<li>Meeting Number<\/li>\n<li>Passcode<\/li>\n<\/ul><\/li>\n<li>Visit the public URL of that Zoom Room, or use the shortcode.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20do%20i%20get%20%E2%80%9Cinvalid%20or%20expired%20token%E2%80%9D%3F\"><h3>Why do I get \u201cInvalid or expired token\u201d?<\/h3><\/dt>\n<dd><p>Usually caused by page caching (serving a stale token). Exclude your Zoom Room URLs from cache and purge all caches (plugin\/server\/CDN).<\/p><\/dd>\n<dt id=\"can%20i%20embed%20webinars%3F\"><h3>Can I embed webinars?<\/h3><\/dt>\n<dd><p>This plugin focuses on meetings. Webinar embedding can be added later, but it depends on your Zoom setup and SDK requirements.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fix: Remove Plugin URI and Author URI headers to avoid unreachable URL warnings.<\/li>\n<li>Fix: register_setting uses sanitize_callback + store SDK Secret as raw string (escape on output).<\/li>\n<li>Fix: Remove DONOTCACHEPAGE constant to avoid global behavior changes.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fix: PHP parse error in settings screen (clean rewrite of class-zdze-settings.php).<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fix: PHPCS escape warnings in settings screen (disabled attribute).<\/li>\n<li>Fix: Remove discouraged manual textdomain loading; add Domain Path for automatic loading.<\/li>\n<li>Fix: Update readme to English + add short description and update \u201cTested up to\u201d.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Add: Zoom app setup instructions and WordPress.org publication assets.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: Token is not invalidated after the first attempt (allows retries).<\/li>\n<li>Improvement: Prevent duplicate join (auto-join + click).<\/li>\n<li>Improvement: Add no-cache headers and DONOTCACHEPAGE for embed pages.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Embed meetings in WordPress using the Zoom Meeting SDK (Web) with secure server-side signature generation. This plugin is not affiliated with Zoom.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/277540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=277540"}],"author":[{"embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zdapps"}],"wp:attachment":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=277540"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=277540"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=277540"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=277540"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=277540"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=277540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}