[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fSF8jZ1lp1sJQNs3Zu1VfP0xr_-Lb-7csebkTo0ln9c8":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":18,"download_link":25,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":38,"analysis":141,"fingerprints":242},"custom-post-types-bubbles","Custom Post Types Bubbles","2.0","Andreas Sofantzis","https:\u002F\u002Fprofiles.wordpress.org\u002Fasofantzis\u002F","\u003Cp>Version 2.0 Completeley revamped. Newer interfaces and more options. Now you have the ability to choose different color for different post type for different status.\u003C\u002Fp>\n\u003Cp>Easily add notifications bubble with counters in Post Types to display either pending or draft posts.\u003C\u002Fp>\n\u003Cp>Custom Post Types Bubbles will add a native notification bubble, the same that WordPress uses to notify you for updates. The administrator can specify for which Post Types he want counter bubbles and also which will be the Post Status (Pending or Draft) to check in order to calculate the count number.\u003C\u002Fp>\n","Easily add notifications bubble with counters in Post Types to display either pending or draft posts.",50,2928,96,4,"2018-10-09T19:53:00.000Z","4.9.29","4","",[20,21,22,23,24],"bubble","bubbles","cpt","cpt-counter","custom-post-types-bubble","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-post-types-bubbles.2.1.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":26,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"asofantzis",2,450,30,84,"2026-04-04T13:26:01.607Z",[39,60,81,101,119],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":27,"num_ratings":27,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":58,"download_link":59,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"wp-speech-balloon","WP-Speech-Balloon","2.4","RA's_Tips4Life","https:\u002F\u002Fprofiles.wordpress.org\u002Ftips4life\u002F","\u003Cp>吹き出し会話を使いたい場所に「テンプレートコード」を貼り付けて、必要箇所に「画像URL」「アバターの名前」「文章」を書くだけで吹き出し会話が表示されます。\u003Cbr \u002F>\n吹き出しの種類は現在「左右各5種類ずつ」あります。\u003Cbr \u002F>\n吹き出しの種類を変更する方法もとても簡単で、「テンプレートコードの数字」を変えるだけで簡単に変更する事ができます。\u003C\u002Fp>\n\u003Cp>First, paste 「Template Code」 where you want to use a speech balloon. And just write 「Image URL」「Name of Avatar」「Text」 in the required place, speech balloon will be displayed.\u003Cbr \u002F>\nCurrently, there are 5 types of “pattern of speech balloon” left and right.\u003Cbr \u002F>\nThe way to change the “pattern of speech balloon” is also very easy, just change the number of the 「Template Code」.\u003C\u002Fp>\n\u003Ch3>Notice\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>このプラグインは “ob_start()” や “ob_end_flush()” を使用しているため、このプラグインを使用するとサーバーベースのキャッシュサービスと競合する可能性があり、それらのサーバーでの使用をサポートすることはできません。。\u003C\u002Fli>\n\u003Cli>This plugin uses “ob_start()” and “ob_end_flush()”. So use of this plugin may conflict with server based cache services, and cannot support it’s use on those servers.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>WP-Speech-Balloon 2.4 の使い方\u003C\u002Fh3>\n\u003Cp>【テンプレート】\u003Cbr \u002F>\n——————————▽\u003Cbr \u002F>\n・通常吹き出し(左パターン)\u003Cbr \u002F>\n[L1_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・通常吹き出し(左パターン グレー)\u003Cbr \u002F>\n[L1_gray_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・通常吹き出し(右パターン)\u003Cbr \u002F>\n[R1_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・通常吹き出し(右パターン グレー)\u003Cbr \u002F>\n[R1_gray_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・ぽわぽわ吹き出し(左パターン)\u003Cbr \u002F>\n[L2_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・ぽわぽわ吹き出し(左パターン グレー)\u003Cbr \u002F>\n[L2_gray_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・ぽわぽわ吹き出し(右パターン)\u003Cbr \u002F>\n[R2_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・ぽわぽわ吹き出し(右パターン グレー)\u003Cbr \u002F>\n[R2_gray_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・パステル&ステッチ吹き出し(左パターン)\u003Cbr \u002F>\n[L3_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・パステル&ステッチ吹き出し(左パターン グレー)\u003Cbr \u002F>\n[L3_gray_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・パステル&ステッチ吹き出し(右パターン)\u003Cbr \u002F>\n[R3_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・パステル&ステッチ吹き出し(右パターン グレー)\u003Cbr \u002F>\n[R3_gray_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・LINE風吹き出し(左パターン)\u003Cbr \u002F>\n[L4_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・LINE風吹き出し(右パターン)\u003Cbr \u002F>\n[R4_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・Twitter風吹き出し(左パターン)\u003Cbr \u002F>\n[L5_wsbStart][L_wsbAvatar][L_wsbName][L_wsbText][L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・Twitter風吹き出し(右パターン)\u003Cbr \u002F>\n[R5_wsbStart][R_wsbText][R_wsbAvatar][R_wsbName][R_wsbEnd]\u003Cbr \u002F>\n——————————▲\u003C\u002Fp>\n\u003Cp>【使い方】※「画像URL」、「アバターの名前」、「会話の内容」を書き換えて使います。\u003Cbr \u002F>\n——————————▽\u003Cbr \u002F>\n・通常吹き出し(左パターン)\u003Cbr \u002F>\n[L1_wsbStart][L_wsbAvatar]画像URL[L_wsbName]表示する名前[L_wsbText]会話の内容[L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・通常吹き出し(右パターン)\u003Cbr \u002F>\n[R1_wsbStart][R_wsbText]会話の内容[R_wsbAvatar]画像URL[R_wsbName]表示する名前[R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・ぽわぽわ吹き出し(左パターン)\u003Cbr \u002F>\n[L2_wsbStart][L_wsbAvatar]画像URL[L_wsbName]表示する名前[L_wsbText]会話の内容[L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・ぽわぽわ吹き出し(右パターン)\u003Cbr \u002F>\n[R2_wsbStart][R_wsbText]会話の内容[R_wsbAvatar]画像URL[R_wsbName]表示する名前[R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・パステル&ステッチ吹き出し(左パターン)\u003Cbr \u002F>\n[L3_wsbStart][L_wsbAvatar]画像URL[L_wsbName]表示する名前[L_wsbText]会話の内容[L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・パステル&ステッチ吹き出し(右パターン)\u003Cbr \u002F>\n[R3_wsbStart][R_wsbText]会話の内容[R_wsbAvatar]画像URL[R_wsbName]表示する名前[R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・LINE風吹き出し(左パターン)\u003Cbr \u002F>\n[L4_wsbStart][L_wsbAvatar]画像URL[L_wsbName]表示する名前[L_wsbText]会話の内容[L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・LINE風吹き出し(右パターン)\u003Cbr \u002F>\n[R4_wsbStart][R_wsbText]会話の内容[R_wsbAvatar]画像URL[R_wsbName]表示する名前[R_wsbEnd]\u003C\u002Fp>\n\u003Cp>・Twitter風吹き出し(左パターン)\u003Cbr \u002F>\n[L5_wsbStart][L_wsbAvatar]画像URL[L_wsbName]表示する名前[L_wsbText]会話の内容[L_wsbEnd]\u003C\u002Fp>\n\u003Cp>・Twitter風吹き出し(右パターン)\u003Cbr \u002F>\n[R5_wsbStart][R_wsbText]会話の内容[R_wsbAvatar]画像URL[R_wsbName]表示する名前[R_wsbEnd]\u003C\u002Fp>\n\u003Cp>※グレーモードは[○○_wsbStart]の部分を[○○_gray_wsbStart]に変えるとグレーモードをお使い頂けます。\u003Cbr \u002F>\n※「LINE風吹き出し」や「Twitter風吹き出し」にグレーモードはありません。\u003Cbr \u002F>\n——————————▲\u003C\u002Fp>\n\u003Cp>使い方などの詳細は以下のページをご覧ください。\u003C\u002Fp>\n\u003Cp>「WP-Speech-Balloon」の使い方\u003Cbr \u002F>\nhttps:\u002F\u002Ftips4life.me\u002Fwp-speech-balloon-how-to-use\u003C\u002Fp>\n\u003Cp>「WP-Speech-Balloon」のインストール方法\u003Cbr \u002F>\nhttps:\u002F\u002Ftips4life.me\u002Fwp-speech-balloon-install\u003C\u002Fp>\n\u003Cp>「WP-Speech-Balloon」のアップデート方法\u003Cbr \u002F>\nhttps:\u002F\u002Ftips4life.me\u002Fwp-speech-balloon-update\u003C\u002Fp>\n\u003Cp>▽ 更新履歴はこちら ▽\u003C\u002Fp>\n\u003Cp>https:\u002F\u002Ftips4life.me\u002Ftag\u002Fwp-speech-balloon\u003C\u002Fp>\n","WordPress の記事内で簡単に吹き出し会話を使えるプラグインです。AMPページでも通常ページと同じように吹き出し会話を使えます。 This is a plugin that makes it easy to use balloon conversation with WordPress.",400,3801,"2019-04-11T09:43:00.000Z","5.1.22","4.9.4","5.2.4",[54,21,55,56,57],"balloon","chat","fukidashi","speech-balloon","https:\u002F\u002Ftips4life.me\u002Fwp-speech-balloon_2_4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-speech-balloon.zip",{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":35,"downloaded":68,"rating":69,"num_ratings":33,"last_updated":70,"tested_up_to":16,"requires_at_least":71,"requires_php":72,"tags":73,"homepage":79,"download_link":80,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"conversation-viewer-display-chat-bubbles","Conversation Viewer – Display Chat Bubbles","1.1","Ryder Damen","https:\u002F\u002Fprofiles.wordpress.org\u002Fryderdamen\u002F","\u003Cp>Conversation Viewer is a responsive WordPress plugin for displaying chat conversations between people as if in their native apps.\u003C\u002Fp>\n\u003Cp>It allows you to write up conversations between two, or groups of more than two people, without having to take screenshots. These conversations can be easily switched into various messaging app styles. There are a few currently supported styles.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Facebook Messenger (the default)\u003C\u002Fli>\n\u003Cli>Android Messages\u003C\u002Fli>\n\u003Cli>iOS Texting\u003C\u002Fli>\n\u003Cli>WhatsApp\u003C\u002Fli>\n\u003Cli>Snapchat\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>With responsive CSS, these conversations look great on all screens, are more responsive and accessible than uploading screenshots.\u003C\u002Fp>\n\u003Ch3>Getting Started & Customization\u003C\u002Fh3>\n\u003Cp>For the complete documentation on how to do everything including example code, visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fryderdamen\u002FWP-Conversation-Viewer\" rel=\"nofollow ugc\">GitHub Readme Page\u003C\u002Fa>.\u003C\u002Fp>\n","A plugin for displaying chat bubbles on your site, like in their original messaging apps.",1928,100,"2018-03-09T20:11:00.000Z","3.8","5.6",[74,75,76,77,78],"chat-bubble","chat-bubbles","conversation-viewer","facebook-messenger","speech-bubble","http:\u002Fryderdamen.com\u002Fprojects\u002Fconversation-viewer","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fconversation-viewer-display-chat-bubbles.zip",{"slug":82,"name":83,"version":84,"author":85,"author_profile":86,"description":87,"short_description":88,"active_installs":27,"downloaded":89,"rating":27,"num_ratings":27,"last_updated":90,"tested_up_to":91,"requires_at_least":92,"requires_php":93,"tags":94,"homepage":99,"download_link":100,"security_score":69,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"audiotyped-ux","AudioTyped UX – Chat-Style Transcripts for Podcasts","1.5.0","Helmut Naber","https:\u002F\u002Fprofiles.wordpress.org\u002Faudiotyped\u002F","\u003Cp>AudioTyped UX provides clean, accessible, and structured transcript layouts for interviews, podcasts, co-host formats, research conversations, and other spoken-word content published on WordPress. The plugin improves readability through a chat-style layout with distinct speaker sections and optional avatars, helping readers follow conversations smoothly.\u003C\u002Fp>\n\u003Cp>Video AudioTyped UX demo:\u003C\u002Fp>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F6Uf4RMfmMr0?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>Traditional transcripts often appear as dense text blocks or hidden behind toggles. AudioTyped UX places transcripts front and center with a clear layout that supports accessibility and makes long-form conversations easier to navigate — including for deaf and hard-of-hearing users.\u003C\u002Fp>\n\u003Cp>All layouts are created using pure HTML, ensuring full SEO crawlability and compatibility with assistive technologies.\u003C\u002Fp>\n\u003Ch4>Why AudioTyped UX?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Improves readability of long conversations  \u003C\u002Fli>\n\u003Cli>Supports accessibility for deaf and hard-of-hearing users  \u003C\u002Fli>\n\u003Cli>Distinct speaker bubbles for clear separation  \u003C\u002Fli>\n\u003Cli>Works for interviews, podcasts, journalistic content, research, NGOs, and education  \u003C\u002Fli>\n\u003Cli>Fully HTML-based for optimal SEO  \u003C\u002Fli>\n\u003Cli>Lightweight and easy to style  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Who Is It For?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Podcasters  \u003C\u002Fli>\n\u003Cli>Journalists publishing interviews  \u003C\u002Fli>\n\u003Cli>Researchers working with qualitative data  \u003C\u002Fli>\n\u003Cli>NGOs sharing spoken-word content  \u003C\u002Fli>\n\u003Cli>Educators and academic projects  \u003C\u002Fli>\n\u003Cli>Corporate teams publishing internal or external transcripts  \u003C\u002Fli>\n\u003Cli>Bloggers and content creators  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Clean chat-style bubble layout  \u003C\u002Fli>\n\u003Cli>Optional speaker avatars  \u003C\u002Fli>\n\u003Cli>Clear speaker identification  \u003C\u002Fli>\n\u003Cli>Accessible HTML structure  \u003C\u002Fli>\n\u003Cli>SEO-friendly markup  \u003C\u002Fli>\n\u003Cli>Works with any theme  \u003C\u002Fli>\n\u003Cli>No external libraries required  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Accessibility & SEO\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Full search engine indexing  \u003C\u002Fli>\n\u003Cli>Screen-reader compatibility  \u003C\u002Fli>\n\u003Cli>Consistent structure for long transcripts  \u003C\u002Fli>\n\u003Cli>Stable, lightweight performance  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cp>Transcripts must follow a consistent speaker structure:\u003Cbr \u002F>\nHost:\u003Cbr \u002F>\nGuest:\u003C\u002Fp>\n","Chat-style transcript layouts with speaker bubbles for readable, SEO-friendly interviews on podcast & interview websites.",2935,"2025-12-19T12:01:00.000Z","6.9.4","5.4.2","7.0",[75,95,96,97,98],"interview","podcast","text","transcript","https:\u002F\u002Faudiotyped.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faudiotyped-ux.1.5.0.zip",{"slug":102,"name":103,"version":104,"author":105,"author_profile":106,"description":107,"short_description":108,"active_installs":27,"downloaded":109,"rating":69,"num_ratings":110,"last_updated":18,"tested_up_to":111,"requires_at_least":112,"requires_php":18,"tags":113,"homepage":116,"download_link":117,"security_score":69,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":118},"bubbles-name","Bubbles Animates Name","1.0.2","Aastha Solutions","https:\u002F\u002Fprofiles.wordpress.org\u002Faasthasolutions\u002F","\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FilKGUkuiTRo?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>You can add your animated bubble name.\u003C\u002Fli>\n\u003Cli>You can set height and wight of bubble canvas size.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Read about Shortcode:\u003C\u002Fh4>\n\u003Cp>[bubblesname name=”Your name” height=”500″ width=”1000″]\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Name (optional) : set your name you want to add bubble animation on it other vice it takes “Your Name” by default.\u003C\u002Fli>\n\u003Cli>height (optional) : set your name(image canvas) height to display as per your page. Default values is 500.\u003C\u002Fli>\n\u003Cli>width (optional) : set your name(image canvas) height to display as per your page. Default values is 1000.\u003C\u002Fli>\n\u003C\u002Ful>\n","Animates your name. When you move your mouse over your name, bubbles will scatter away and then reassemble.",1184,3,"6.0.11","4.4",[114,115,102],"animates-name","animation","http:\u002F\u002Faasthasolutions.com\u002Fabout-us\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbubbles-name.zip","2026-03-15T10:48:56.248Z",{"slug":120,"name":121,"version":122,"author":123,"author_profile":124,"description":125,"short_description":126,"active_installs":127,"downloaded":128,"rating":69,"num_ratings":129,"last_updated":130,"tested_up_to":131,"requires_at_least":132,"requires_php":133,"tags":134,"homepage":137,"download_link":138,"security_score":139,"vuln_count":129,"unpatched_count":27,"last_vuln_date":140,"fetched_at":29},"mas-static-content","MAS Static Content","1.1.2","MadrasThemes","https:\u002F\u002Fprofiles.wordpress.org\u002Fmadrasthemes\u002F","\u003Cp>MAS Static Content is a free plugin that allows you to to create a custom post type static content and use it with shortcode.\u003C\u002Fp>\n\u003Cp>Use the \u003Ccode>[mas_static_content]\u003C\u002Fcode> shortcode with id attribute to display static content. You can also add class attribute for wrapper class so you can modify the specific output with custom CSS.\u003C\u002Fp>\n","MAS Static Content is a free plugin that allows you to to create a custom post type static content and use it with shortcode.",10000,378461,1,"2025-11-03T10:36:00.000Z","6.7.5","6.7","7.4",[22,135,136],"megamenu","static-content","https:\u002F\u002Fgithub.com\u002Fmadrasthemes\u002Fmas-static-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmas-static-content.1.1.2.zip",99,"2024-09-24 00:00:00",{"attackSurface":142,"codeSignals":171,"taintFlows":202,"riskAssessment":229,"analyzedAt":241},{"hooks":143,"ajaxHandlers":162,"restRoutes":168,"shortcodes":169,"cronEvents":170,"entryPointCount":129,"unprotectedCount":27},[144,150,154,157],{"type":145,"name":146,"callback":147,"file":148,"line":149},"action","admin_enqueue_scripts","admin_scripts_and_styles","cpt-bubbles.php",21,{"type":145,"name":151,"callback":152,"file":148,"line":153},"plugins_loaded","cpt_bubbles_textdomain",23,{"type":145,"name":155,"callback":155,"file":148,"line":156},"admin_menu",25,{"type":158,"name":159,"callback":160,"file":148,"line":161},"filter","add_menu_classes","bubble_count_number",27,[163],{"action":164,"nopriv":165,"callback":164,"hasNonce":166,"hasCapCheck":165,"file":148,"line":167},"save_cptb_options",false,true,29,[],[],[],{"dangerousFunctions":172,"sqlUsage":179,"outputEscaping":181,"fileOperations":27,"externalRequests":27,"nonceChecks":129,"capabilityChecks":27,"bundledLibraries":201},[173,177],{"fn":174,"file":148,"line":175,"context":176},"unserialize",77,"$options = unserialize($options);",{"fn":174,"file":148,"line":178,"context":176},159,{"prepared":27,"raw":27,"locations":180},[],{"escaped":27,"rawEcho":182,"locations":183},10,[184,187,189,191,192,194,195,196,197,199],{"file":148,"line":185,"context":186},94,"raw output",{"file":148,"line":188,"context":186},95,{"file":148,"line":190,"context":186},109,{"file":148,"line":190,"context":186},{"file":148,"line":193,"context":186},119,{"file":148,"line":193,"context":186},{"file":148,"line":193,"context":186},{"file":148,"line":193,"context":186},{"file":148,"line":198,"context":186},121,{"file":148,"line":200,"context":186},143,[],[203,221],{"entryPoint":204,"graph":205,"unsanitizedCount":27,"severity":220},"save_cptb_options (cpt-bubbles.php:207)",{"nodes":206,"edges":218},[207,212],{"id":208,"type":209,"label":210,"file":148,"line":211},"n0","source","$_POST",216,{"id":213,"type":214,"label":215,"file":148,"line":216,"wp_function":217},"n1","sink","update_option() [Settings Manipulation]",218,"update_option",[219],{"from":208,"to":213,"sanitized":166},"low",{"entryPoint":222,"graph":223,"unsanitizedCount":27,"severity":220},"\u003Ccpt-bubbles> (cpt-bubbles.php:0)",{"nodes":224,"edges":227},[225,226],{"id":208,"type":209,"label":210,"file":148,"line":211},{"id":213,"type":214,"label":215,"file":148,"line":216,"wp_function":217},[228],{"from":208,"to":213,"sanitized":166},{"summary":230,"deductions":231},"The \"custom-post-types-bubbles\" v2.0 plugin exhibits a mixed security posture. On the positive side, it has no known vulnerabilities in its history and boasts a minimal attack surface with all entry points appearing to be protected by authorization checks. The use of prepared statements for all SQL queries is also a strong indicator of good security practices in database interactions.\n\nHowever, significant concerns arise from the static analysis. The presence of the `unserialize` function, particularly without clear sanitization or input validation context provided in the data, is a notable risk. Furthermore, the complete lack of output escaping across all identified output points is a critical vulnerability that could lead to cross-site scripting (XSS) attacks if user-supplied data is ever rendered without proper sanitization. The absence of capability checks on its single AJAX handler, despite a nonce check, leaves a potential gap for privilege escalation or unauthorized actions if the nonce can be bypassed or reused.\n\nGiven the absence of historical vulnerabilities, it's difficult to draw conclusions about long-term security trends. However, the current code analysis reveals a critical weakness in output handling and a potentially exploitable use of `unserialize`. While the protected attack surface is commendable, the identified code signals represent immediate and serious risks that must be addressed.",[232,235,238],{"reason":233,"points":234},"Unescaped output found in all instances",8,{"reason":236,"points":237},"Dangerous function 'unserialize' present",7,{"reason":239,"points":240},"AJAX handler without capability check",5,"2026-03-16T21:58:24.818Z",{"wat":243,"direct":250},{"assetPaths":244,"generatorPatterns":247,"scriptPaths":248,"versionParams":249},[245,246],"\u002Fwp-content\u002Fplugins\u002Fcustom-post-types-bubbles\u002Fassets\u002Fcss\u002Fcptb.min.css","\u002Fwp-content\u002Fplugins\u002Fcustom-post-types-bubbles\u002Fassets\u002Fjs\u002Fcptb.min.js",[],[246],[],{"cssClasses":251,"htmlComments":268,"htmlAttributes":269,"restEndpoints":275,"jsGlobals":276,"shortcodeOutput":277},[252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267],"cpt-item","is-active","js-toggle-cpt","toggle-cpt","post-status-list-wrapper","post-status-list","post-status-item","js-toggle-status","toggle-status","colorpicker","update-plugins","plugin-count","cptb","cptb-form","cptb-cpt-list","cptb-save-btn",[],[270,271,272,273,274],"data-cpt","data-post-status","data-color","cptb-nonce","nonce",[],[],[]]