[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fcAvViLHzWcmqFAtRW8Ol7pJ_BC42YZa1b-pfVOLArdw":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":24,"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":133,"fingerprints":231},"wp-conditional-shortcodes","WP Conditional Shortcodes","1.1.2","TomHarrigan","https:\u002F\u002Fprofiles.wordpress.org\u002Ftomharrigan\u002F","\u003Cp>This plugin gives content developers shortcode equivalents to the conditional tags that WordPress provides for theme developments.  Each shortcode only includes its contents if a certain condition is true.  This allows them to modify what content is shown in any given context on a post-by-post basis. is_page, is_single and is_category allow specific pages, posts, categories to be specified by using the “ids” parameter.\u003C\u002Fp>\n\u003Cp>The shortcodes and when they include contents are:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>is_single – if showing a single post. Use the optional parameter “ids” to specify specific posts.\u003C\u002Fli>\n\u003Cli>is_singular – if showing a single post or page.\u003C\u002Fli>\n\u003Cli>is_page – if showing a page. Use the optional parameter “ids” to specify specific pages.\u003C\u002Fli>\n\u003Cli>is_home – if showing the blog home.\u003C\u002Fli>\n\u003Cli>is_front_page – if showing the front page of the site.\u003C\u002Fli>\n\u003Cli>is_sticky – if the current post or page is ‘sticky’.\u003C\u002Fli>\n\u003Cli>is_category – if showing a category-based archive. Use the optional parameter “ids” to specify specific categories.\u003C\u002Fli>\n\u003Cli>is_page – if showing a page.\u003C\u002Fli>\n\u003Cli>is_tag – if showing a tag-based archive.\u003C\u002Fli>\n\u003Cli>is_tax – if showing a tag- or category-based archive.\u003C\u002Fli>\n\u003Cli>is_author – if showing an author-based archive.\u003C\u002Fli>\n\u003Cli>is_archive – if showing any archive.\u003C\u002Fli>\n\u003Cli>is_year – if showing a yearly archive.\u003C\u002Fli>\n\u003Cli>is_month – if showing a monthly archive.\u003C\u002Fli>\n\u003Cli>is_day – if showing a daily archive.\u003C\u002Fli>\n\u003Cli>is_time – if showing an hourly or shorter archive.\u003C\u002Fli>\n\u003Cli>is_feed – if generating a feed.\u003C\u002Fli>\n\u003Cli>is_search – if showing search results.\u003C\u002Fli>\n\u003Cli>comments_open – if comments are open for the current post or page.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Each shortcode also has an “else” shortcode that can go inside it.  For example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[is_single]\nThis is only shown if showing just this post.\n[not_single]\nThis is shown everywhere else.\n[\u002Fis_single]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The is_page, is_category and is_single shortcodes allow you to specify pages, categories, posts on which to show the content if you’d like to only show content within the shortcode on specific pages, posts or categories.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[is_page ids=\"76, 339\"]hello[\u002Fis_page]\n\n[is_category ids=\"5, 7\"]hello[\u002Fis_page]\n\n[is_single ids=\"94, 63\"]hello[\u002Fis_single]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>In general, the “else” shortcode is just replacing “is” with “not”.  The one exception is “not_comments_open” as the “else” shortcode for “comments_open”.\u003C\u002Fp>\n\u003Cp>Whichever chunk of content is included is processed for shortcodes, so you can use all your other shortcodes and even nest these if you need to.\u003C\u002Fp>\n\u003Ch3>Further Instructions\u003C\u002Fh3>\n\u003Cp>Any other information I have can be found at the \u003Ca href=\"http:\u002F\u002Fthomasharrigan.com\u002Fwordpress-conditional-shortcodes\u002F\" rel=\"nofollow ugc\">WP Conditional Shortcodes Homepage\u003C\u002Fa>.\u003C\u002Fp>\n","Use conditional tags as shortcodes.",40,3388,100,4,"2013-02-27T10:23:00.000Z","3.5.2","2.5","",[20,21,22,23],"conditional","conditional-tags","shortcode","shortcodes","http:\u002F\u002Fthomasharrigan.com\u002Fwordpress-conditional-shortcodes\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-conditional-shortcodes.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},"tomharrigan",3,110,30,84,"2026-04-04T15:06:39.055Z",[39,62,82,98,115],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":49,"num_ratings":50,"last_updated":51,"tested_up_to":52,"requires_at_least":53,"requires_php":54,"tags":55,"homepage":60,"download_link":61,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"edd-additional-shortcodes","Easy Digital Downloads – Additional Shortcodes","1.4.2","Chris Klosowski","https:\u002F\u002Fprofiles.wordpress.org\u002Fcklosows\u002F","\u003Cp>Additional Shortcoddes for Easy Digital Downloads adds powerful condional page logic for your WordPress powered ecommerce store.\u003C\u002Fp>\n\u003Ch3>How to use Additional Shortcodes\u003C\u002Fh3>\n\u003Cp>The shortcodes included all need opening and closing tags:\u003C\u002Fp>\n\u003Cp>Show content if shopping cart is \u003Cem>not\u003C\u002Fem> empty.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_cart_has_contents] Content Here [\u002Fedd_cart_has_contents]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show content if the shopping cart \u003Cem>is empty\u003C\u002Fem>.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_cart_is_empty] Content Here [\u002Fedd_cart_is_empty]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show the content if the cart contains specific products (supports any, all, and variations)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_items_in_cart ids=\"20\"] Content Here [\u002Fedd_items_in_cart]\n\n[edd_items_in_cart ids=\"20,34,25:1\"] Content Here [\u002Fedd_items_in_cart]\n\n[edd_items_in_cart ids=\"20,34,25:1\" match=\"all\"] Content Here [\u002Fedd_items_in_cart]\n\n[edd_items_in_cart ids=\"20,34,25:1\" match=\"any\"] Content Here [\u002Fedd_items_in_cart]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show the content if the cart does \u003Cem>not\u003C\u002Fem> contain specific products (supports any, all, and variations)\u003C\u002Fp>\n\u003Cp>[edd_items_not_in_cart ids=”20″]Content here[\u002Fedd_items_not_in_cart]\u003Cbr \u002F>\n[edd_items_not_in_cart ids=”20,34,25:1″]Content Here[\u002Fedd_items_not_in_cart]\u003Cbr \u002F>\n[edd_items_not_in_cart ids=”20,34,25:1″ match=”all”]Content Here[\u002Fedd_items_not_in_cart]\u003Cbr \u002F>\n[edd_items_not_in_cart ids=”20,34,25:1″ match=”any”]Content Here[\u002Fedd_items_not_in_cart]\u003C\u002Fp>\n\u003Cp>Show the content if the user has made previous purchases (will always be hidden if logged out)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_user_has_purchases] Content Here [\u002Fedd_user_has_purchases]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show the content only if the user has no purchases. Includes the ‘loggedout’ parameter to specify if logged out users\u003Cbr \u002F>\nshould be included in seeing the content. (Default true)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_user_has_no_purchases loggedout=\"true\"] Content Here [\u002Fedd_user_has_no_purchases]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show the content to logged in users\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_is_user_logged_in] Content Here [\u002Fedd_is_user_logged_in]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show the content only to logged out users\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_is_user_logged_out] Content Here [\u002Fedd_is_user_logged_out]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show content only if a user has purchased any of the specified download ids.\u003Cbr \u002F>\nSupports multiple IDs. If a download has variable pricing, you can pass just the ID for all options, or \u003Ccode>\u003Cdownload id>\u003C\u002Fcode>:\u003Ccode>\u003Cprice id>\u003C\u002Fcode> for a specific variable pricing option.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_user_has_purchased ids=\"20,34,25:1\"] Content Here [\u002Fedd_user_has_purchased]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Feasydigitaldownloads.com\u002Fpricing#professional-pass\" rel=\"nofollow ugc\">Software Licensing Support\u003C\u002Fa>:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Show content only if a user has active licenses\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_has_active_licenses] Content Here [\u002Fedd_has_active_licenses]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show content only if user has expired licenses\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_has_expired_licenses]Content Here[\u002Fedd_has_expired_licenses]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Show content only if user has all expired licenses\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[edd_has_all_expired_licenses]Content Here[\u002Fedd_has_all_expired_licenses]\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Add powerful conditional page content support to WordPress based on Easy Digital Downloads conditions.",400,10958,90,2,"2022-11-02T22:12:00.000Z","6.1.10","4.9","5.3",[56,57,58,59,23],"conditional-logic","easy-digital-downloads","landing-page","shopping-cart","https:\u002F\u002Feasydigitaldownloads.com\u002Fdownloads\u002Fedd-additional-shortcodes\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fedd-additional-shortcodes.1.4.2.zip",{"slug":63,"name":64,"version":65,"author":66,"author_profile":67,"description":68,"short_description":69,"active_installs":70,"downloaded":71,"rating":13,"num_ratings":72,"last_updated":73,"tested_up_to":74,"requires_at_least":75,"requires_php":76,"tags":77,"homepage":18,"download_link":80,"security_score":81,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"if-shortcode","If Shortcode","0.3.0","geomagas","https:\u002F\u002Fprofiles.wordpress.org\u002Fgeomagas\u002F","\u003Cp>This plugin provides an [if] shortcode to conditionally render content. The syntax is the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[if condition1 condition2=false condition3]{content}[\u002Fif]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Conditions are passed as attribute names. Multiple conditions evaluate to the result of ORing all of them. In other words, if at least one condition evaluates to the desired boolean result, {content} is rendered, otherwise it is discarded.\u003Cbr \u002F>\nAttribute values determine if we want the condition to be true or false. A value of \u003Ccode>'0'\u003C\u002Fcode>, \u003Ccode>'false'\u003C\u002Fcode>, \u003Ccode>''\u003C\u002Fcode> (the empty string), \u003Ccode>'null'\u003C\u002Fcode> or \u003Ccode>'no'\u003C\u002Fcode> means we expect the condition to be false. Anything else, including the absense of a value, is interpreted as true.\u003C\u002Fp>\n\u003Cp>For example, suppose that we want to include a sentence in a post, but only for anonymous visitors:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[if is_user_logged_in=no]The Sentence.[\u002Fif]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>It also provides an [else] shortcode and an [eitherway] one for use inside [if] blocks. [else] will render its content if the condition evaluates to false, and [eitherway] will render its content regardless of the evaluation result.\u003Cbr \u002F>\nWhen used outside an [if] block, these shortcodes behave as if the whole content is surrounded by an [if] shortcode whose condition evaluates to true. In other words, an [else] shortcode would not render any content, while a [eitherway] one would. You can use as many of these shortcodes as you like in a single [if] block, which gives you the ability to do things like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    - Am I logged in?\n    [if is_user_logged_in]- Yes you are.\n    [else]- No you are not.\n    [\u002Felse][eitherway]- I'm sorry, what?\n    [\u002Feitherway]- I said YOU A-R-E LOGGED IN!!!\n    [else]- YOU ARE NOT LOGGED IN!!! What's the matter with you?[\u002Felse][\u002Fif]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>A multitude of conditions are supported out-of-the-box. The following evaluate to the result of the corresponding \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Fthemes\u002Fbasics\u002Fconditional-tags\u002F\" rel=\"nofollow ugc\">WordPress Conditional Tag\u003C\u002Fa>, using the no-parameter syntax:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    is_single\n    is_singular\n    is_page\n    is_home\n    is_front_page\n    is_privacy_policy\n    is_attachment\n    is_category\n    is_tag\n    is_tax\n    is_author\n    is_archive\n    is_year\n    is_month\n    is_date\n    is_day\n    is_time\n    is_feed\n    is_search\n    is_sticky\n    is_preview\n    has_term\n    has_excerpt\n    comments_open\n    pings_open\n    is_404\n    is_user_logged_in\n    is_super_admin\n    is_multi_author\n    is_multisite\n    is_main_site\n    is_child_theme\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>For example, the evaluation of the \u003Ccode>is_page\u003C\u002Fcode> condition is equivalent to calling \u003Ccode>is_page()\u003C\u002Fcode> with no parameter.\u003C\u002Fp>\n\u003Ch3>Extending\u003C\u002Fh3>\n\u003Cp>The functionality of the plugin can be extended by other plugins, by means of adding custom conditions through filters. To add a custom condition, a filter hook must be defined in the following manner:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter($if_shortcode_filter_prefix.'my_condition','my_condition_evaluator');\n\nfunction my_condition_evaluator($value) {\n    $evaluate=.... \u002F* add your evaluation code here *\u002F\n    return $evaluate;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then, you can use your custom condition like so:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[if my_condition]{content}[\u002Fif]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>A big thanks to M Miller for the \u003Ca href=\"http:\u002F\u002Fwordpress.stackexchange.com\u002Fa\u002F123073\u002F39275\" rel=\"nofollow ugc\">\u003Ccode>normalize_empty_atts()\u003C\u002Fcode>\u003C\u002Fa> function.\u003C\u002Fp>\n","This plugin provides an [if] shortcode to conditionally render content.",200,4871,6,"2024-08-02T18:34:00.000Z","6.6.5","3.0.1","5.4",[20,21,78,79,22],"else","if","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fif-shortcode.0.3.0.zip",92,{"slug":83,"name":84,"version":85,"author":86,"author_profile":87,"description":88,"short_description":89,"active_installs":13,"downloaded":90,"rating":13,"num_ratings":50,"last_updated":91,"tested_up_to":92,"requires_at_least":93,"requires_php":18,"tags":94,"homepage":18,"download_link":97,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"conditional-tags-shortcode","Conditional Tags Shortcode","0.2","shazdeh","https:\u002F\u002Fprofiles.wordpress.org\u002Fshazdeh\u002F","\u003Cp>With this shortcode you can take control of where the content is displayed.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>You can use all the \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FConditional_Tags\" rel=\"nofollow ugc\">conditional tags\u003C\u002Fa> WordPress provides. Checkout examples below.\u003C\u002Fp>\n\u003Cp>Show text only on the homepage:\u003Cbr \u002F>\n    [if is_front_page] The text [\u002Fif]\u003C\u002Fp>\n\u003Cp>Show text only on the About page of the site:\u003Cbr \u002F>\n    [if is_page=”about”] The text [\u002Fif]\u003C\u002Fp>\n\u003Cp>Show only on the category archive view:\u003Cbr \u002F>\n    [if is_category] The text [\u002Fif]\u003C\u002Fp>\n\u003Cp>You can add “not_” before the conditional tag to reverse the logic, example:\u003Cbr \u002F>\nShow on all pages of the site except the homepage:\u003Cbr \u002F>\n    [if not_is_front_page] The text [\u002Fif]\u003C\u002Fp>\n\u003Ch4>OR\u003C\u002Fh4>\n\u003Cp>Using multiple parameters, the content is displayed when either of the conditions are met (“OR” comparison), for example, show text on both category and tag archive pages:\u003Cbr \u002F>\n    [if is_category is_tag] The text [\u002Fif]\u003C\u002Fp>\n\u003Ch4>AND\u003C\u002Fh4>\n\u003Cp>To set multiple conditions you can nest the shortcode, for example show text only on homepage AND if the user is logged in:\u003Cbr \u002F>\n    [if is_user_logged_in][if is_front_page] The text [\u002Fif][\u002Fif]\u003C\u002Fp>\n\u003Cp>Show a link to wordpress.org site, only on single post pages and only on mobile devices:\u003Cbr \u002F>\n    [if wp_is_mobile][if is_single] \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002F\" rel=\"ugc\">WordPress\u003C\u002Fa> [\u002Fif][\u002Fif]\u003C\u002Fp>\n\u003Ch4>has_term_{taxonomy}\u003C\u002Fh4>\n\u003Cp>You can use this to check if the current post in the loops belongs to a custom term in the desired taxonomy. See: https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fhas_term\u003C\u002Fp>\n\u003Cp>Example, check if current post has the “jazz” term in the “genre” taxonomy:\u003Cbr \u002F>\n    [if has_term_genre=”jazz”] The text [\u002Fif]\u003C\u002Fp>\n","A shortcode to display content based on context.",8135,"2020-05-26T16:38:00.000Z","5.4.19","3.1",[20,21,95,96,22],"context","page","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fconditional-tags-shortcode.zip",{"slug":99,"name":100,"version":101,"author":102,"author_profile":103,"description":104,"short_description":105,"active_installs":106,"downloaded":107,"rating":27,"num_ratings":27,"last_updated":108,"tested_up_to":109,"requires_at_least":110,"requires_php":18,"tags":111,"homepage":113,"download_link":114,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"conditional-login-shortcodes","Conditional Login Shortcodes","1.0","Nishant Vaity","https:\u002F\u002Fprofiles.wordpress.org\u002Fenishant\u002F","\u003Cp>Provides shortcodes for conditional login to include content in a post based on context. With this conditional shortcodes content can be protected and will be displayed only to logged in members.\u003C\u002Fp>\n","Provides shortcodes for conditional login to include content in a post based on context.",10,1693,"2014-08-02T18:00:00.000Z","3.9.40","3.9.1",[20,99,112,22,23],"login","http:\u002F\u002Fwordpress.org\u002Fplugins\u002Fconditional-login-shortcodes\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fconditional-login-shortcodes.zip",{"slug":116,"name":117,"version":118,"author":119,"author_profile":120,"description":121,"short_description":122,"active_installs":27,"downloaded":123,"rating":13,"num_ratings":50,"last_updated":124,"tested_up_to":125,"requires_at_least":126,"requires_php":18,"tags":127,"homepage":131,"download_link":132,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"personalized-shortcode-pro","Personalized Shortcodes Pro","1.0.1","poglaa","https:\u002F\u002Fprofiles.wordpress.org\u002Fpoglaa\u002F","\u003Cp>The plugin enables user to add various data from visitor in the content as a shortcode. Some use cases:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Doctors in New York love this device (New York gets replaced by the user’s city)\u003C\u002Fli>\n\u003Cli>Is your iPhone screen broken? (iPhone is gets replaced)\u003C\u002Fli>\n\u003Cli>Slovenians are the smartest people in the world. (Slovenians gets replaced)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>It is also possible to output content conditionally. Let’s say you want to show some content only for EU users (GDPR). Just wrap the content in suitable shortcode and it will only get displayed for users in EU. The same goes for excluding content.\u003C\u002Fp>\n\u003Cp>To see all the attributes, visit \u003Ca href=\"https:\u002F\u002Fmaticpogladic.com\u002Fpersonalized-shortcode-pro\" rel=\"nofollow ugc\">documentation page\u003C\u002Fa>.\u003C\u002Fp>\n","Shortcodes with all the visitor's info that we can get (country, IP, country phone code, country flag emoji, city...).",1164,"2019-07-06T08:12:00.000Z","5.2.24","4.2",[128,129,130,23],"conditional-content","country-specific-content","geoip","https:\u002F\u002Fmaticpogladic.com\u002Fpersonalized-shortcode-pro\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpersonalized-shortcode-pro.1.0.1.zip",{"attackSurface":134,"codeSignals":214,"taintFlows":221,"riskAssessment":222,"analyzedAt":230},{"hooks":135,"ajaxHandlers":136,"restRoutes":137,"shortcodes":138,"cronEvents":212,"entryPointCount":213,"unprotectedCount":27},[],[],[],[139,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208],{"tag":140,"callback":141,"file":142,"line":143},"is_single","is_single_shortcode_handler","conditional_shortcodes.php",149,{"tag":145,"callback":146,"file":142,"line":147},"is_page","is_page_shortcode_handler",150,{"tag":149,"callback":150,"file":142,"line":151},"is_singular","is_singular_shortcode_handler",151,{"tag":153,"callback":154,"file":142,"line":155},"is_home","is_home_shortcode_handler",152,{"tag":157,"callback":158,"file":142,"line":159},"is_front_page","is_front_page_shortcode_handler",153,{"tag":161,"callback":162,"file":142,"line":163},"is_sticky","is_sticky_shortcode_handler",154,{"tag":165,"callback":166,"file":142,"line":167},"is_category","is_category_shortcode_handler",155,{"tag":169,"callback":170,"file":142,"line":171},"is_tag","is_tag_shortcode_handler",156,{"tag":173,"callback":174,"file":142,"line":175},"is_tax","is_tax_shortcode_handler",157,{"tag":177,"callback":178,"file":142,"line":179},"is_author","is_author_shortcode_handler",158,{"tag":181,"callback":182,"file":142,"line":183},"is_archive","is_archive_shortcode_handler",159,{"tag":185,"callback":186,"file":142,"line":187},"is_year","is_year_shortcode_handler",160,{"tag":189,"callback":190,"file":142,"line":191},"is_month","is_month_shortcode_handler",161,{"tag":193,"callback":194,"file":142,"line":195},"is_day","is_day_shortcode_handler",162,{"tag":197,"callback":198,"file":142,"line":199},"is_time","is_time_shortcode_handler",163,{"tag":201,"callback":202,"file":142,"line":203},"is_feed","is_feed_shortcode_handler",164,{"tag":205,"callback":206,"file":142,"line":207},"is_search","is_search_shortcode_handler",165,{"tag":209,"callback":210,"file":142,"line":211},"comments_open","comments_open_shortcode_handler",166,[],18,{"dangerousFunctions":215,"sqlUsage":216,"outputEscaping":218,"fileOperations":27,"externalRequests":27,"nonceChecks":27,"capabilityChecks":27,"bundledLibraries":220},[],{"prepared":27,"raw":27,"locations":217},[],{"escaped":27,"rawEcho":27,"locations":219},[],[],[],{"summary":223,"deductions":224},"The \"wp-conditional-shortcodes\" v1.1.2 plugin exhibits a generally good security posture based on the provided static analysis. There are no identified dangerous functions, file operations, external HTTP requests, or SQL queries that do not utilize prepared statements. All output appears to be properly escaped, and the taint analysis revealed no issues. The absence of any recorded vulnerabilities, including critical or high severity ones, further strengthens this positive outlook.\n\nHowever, a notable concern is the lack of nonce checks and capability checks. While the plugin has a significant number of entry points (18 shortcodes), none of them are directly exposed to unauthorized access according to the analysis. The absence of nonce and capability checks, particularly on shortcodes which can sometimes be triggered indirectly or by less trusted users, represents a potential weakness. If any of these shortcodes were to perform sensitive operations or accept user-supplied input that is then used in a critical context, the lack of these security mechanisms could be exploited. The vulnerability history being clear is a positive sign, suggesting a history of stable and secure development, but the static analysis still points to areas where robustness could be improved.\n\nIn conclusion, the plugin demonstrates strong coding practices in several key areas, such as SQL sanitization and output escaping, and has a clean vulnerability record. The primary area for improvement lies in implementing nonce and capability checks for its shortcode functionality to further harden its attack surface and prevent potential vulnerabilities that are not immediately apparent in static analysis but could arise from indirect interactions or specific exploitation scenarios.",[225,228],{"reason":226,"points":227},"Missing nonce checks",5,{"reason":229,"points":227},"Missing capability checks","2026-03-16T22:16:55.961Z",{"wat":232,"direct":237},{"assetPaths":233,"generatorPatterns":234,"scriptPaths":235,"versionParams":236},[],[],[],[],{"cssClasses":238,"htmlComments":239,"htmlAttributes":240,"restEndpoints":241,"jsGlobals":242,"shortcodeOutput":243},[],[],[],[],[],[244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262],"[not_single]","[not_page]","[not_singular]","[not_home]","[not_front_page]","[not_sticky]","[not_category]","[not_tag]","[not_tax]","[not_author]","[not_archive]","[not_date]","[not_year]","[not_month]","[not_day]","[not_time]","[not_feed","[not_search]","[not_comments_open]"]