[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fLQudoIPxqq--694RNbv_h76LsTUDHkSxsvFjd_2SRQQ":3,"$fuNYoharbIgz9mdcnTjevALkU-nSo1emoI3U_MGodtHI":286,"$fpMeMtv35S6QjPL4_GmnXptKn2AP3SJ1k_vry6biiNcs":291},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"discovery_status":28,"vulnerabilities":29,"developer":30,"crawl_stats":26,"alternatives":37,"analysis":132,"fingerprints":223},"eacreadme","{eac}Doojigger Readme Extension for WordPress","1.5.1","Kevin Burkholder","https:\u002F\u002Fprofiles.wordpress.org\u002Fkevinburkholder\u002F","\u003Cp>\u003Cem>{eac}Readme\u003C\u002Fem> is an \u003Ca href=\"https:\u002F\u002FeacDoojigger.earthasylum.com\u002F\" rel=\"nofollow ugc\">{eac}Doojigger\u003C\u002Fa> extension which loads and translates a WordPress markdown ‘readme’ file providing shortcodes and embedding URLs to access header lines and section blocks.\u003C\u002Fp>\n\u003Ch4>Shortcode Usage\u003C\u002Fh4>\n\u003Cp>The first used shortcode must indicate the file to load…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme file='\u002Fdocfolder\u002Freadme.txt']        # file is relative to the WordPress document root folder\n[eacReadme content='\u002Fcontentfolder\u002Freadme.txt'] # content file is relative to the WordPress content folder (wp-content\u002F)\n[eacReadme plugin='\u002Fpluginfolder\u002Freadme.txt']   # plugin file is relative to the WordPress plugins folder (wp-content\u002Fplugins\u002F)\n[eacReadme theme='\u002Fthemefolder\u002Freadme.txt']     # theme file is relative to the WordPress themes folder (wp-content\u002Fthemes\u002F)\n[eacReadme wpsvn='\u002Fslugname\u002Ftrunk\u002Freadme.txt']  # load file from WordPress SVN repository\n[eacReadme github='\u002Fowner\u002Frepository\u002Fmain\u002Freadme.txt']      # load file from a github repository\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>After which, headers and sections may be pulled from that file…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]All Headers[\u002FeacReadme]              # parses all header lines\n[eacReadme]headerName[\u002FeacReadme]               # gets the value of the named header line\n\n[eacReadme]All Sections[\u002FeacReadme]             # parses all section blocks\n[eacReadme]sectionName[\u002FeacReadme]              # parses the content of the named section block\n[eacReadme]sectionName\u002Fsub-section[\u002FeacReadme]  # parses the content of the named sub-section within section block\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>One shortcode can do it all…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme plugin='\u002Fpluginfolder\u002Freadme.txt']Document[\u002FeacReadme]    # loads the file and parses the entire document\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or load the entire file as a single code block…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme theme='\u002Fthemefolder\u002Ffunctions.php']Code File[\u002FeacReadme]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Shortcode Examples\u003C\u002Fh4>\n\u003Cp>Get header values…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]Contributors[\u002FeacReadme]\n[eacReadme]Donate link[\u002FeacReadme]\n[eacReadme]Requires at least[\u002FeacReadme]\n[eacReadme]Stable tag[\u002FeacReadme]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Get unnamed segments…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]Title[\u002FeacReadme]                    # gets the '=== plugin name ===' line (before headers)\n[eacReadme]Short Description[\u002FeacReadme]        # gets the short description (between headers and first section block)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Get section blocks…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]Description[\u002FeacReadme]\n[eacReadme]Installation[\u002FeacReadme]\n[eacReadme]Screenshots[\u002FeacReadme]\n[eacReadme]Changelog[\u002FeacReadme]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Get multiple blocks and\u002For sub-sections…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme plugin='\u002FeacReadme\u002Freadme.txt']Short Description,Description[\u002FeacReadme]\n[eacReadme plugin='\u002FeacReadme\u002Freadme.txt']Short Description,Description\u002FShortcode Examples[\u002FeacReadme]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Get a file as a code block…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme theme='\u002Fmy-child-theme\u002Ffunctions.js' lang='js']Code File[\u002FeacReadme]\n[eacReadme theme='\u002Fmy-child-theme\u002Fstyle.css' lang='css']Code File[\u002FeacReadme]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Other Options\u003C\u002Fh4>\n\u003Cp>Change the default cache time-to-live by adding to wp-config.php:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define('EAC_README_CACHE_LIFETIME',$seconds);   # default: 1-day (DAY_IN_SECONDS).\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Override the default cache time-to-live\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme ttl=$seconds ...]                    # minimum: 1-minute (MINUTE_IN_SECONDS).\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Set the default GitHub access token (for private repositories):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define('GITHUB_ACCESS_TOKEN',$token);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Set\u002Foverride the GitHub access token\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme token=$token ...]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Override option to parse markdown when retrieving a segment\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme parse='true|false' ...]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Set class=’language-*’ on code blocks\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme lang='php|js|css|html' ...]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Translating Header\u002FSection Names\u003C\u002Fh4>\n\u003Cp>Translate header\u002Fsection names when retrieving \u003Cem>All Headers\u003C\u002Fem>, \u003Cem>All Sections\u003C\u002Fem>, or \u003Cem>Document\u003C\u002Fem>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme translate='name=newname,...']\n[eacReadme translate='Requires at least=Requires WordPress Version,Screenshots=Screen Shots']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Erase default translation table\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme translate='no|none|false']\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Default translation table\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[\n    'Headers'               => 'Document Header',\n    'Plugin URI'            => 'Homepage',\n    'Stable tag'            => 'Current Version',\n    'Requires at least'     => 'Requires WordPress Version',\n    'Tested up to'          => 'Compatible up to',\n    'Requires PHP'          => 'Requires PHP Version',\n    'WC requires at least'  => 'Requires WooCommerce',\n    'Requires EAC'          => 'Requires {eac}Doojigger',\n    'Changelog'             => 'Change Log',\n    'Screenshots'           => 'Screen Shots',\n];\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Embedding\u003C\u002Fh4>\n\u003Cp>{eac}Readme can also be used to embed URLs in a WordPress Post or Page. Simply paste the url in the \u003Ccode>Embed\u003C\u002Fcode> URL block.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Navigate to the post or page where the readme content is to be embedded.\u003C\u002Fli>\n\u003Cli>Click the ‘+’ (Block Inserter) icon and search for “Embed” or type \u002Fembed.\u003C\u002Fli>\n\u003Cli>Select the “Embed” block.\u003C\u002Fli>\n\u003Cli>Paste the URL to the readme file into the provided field.\u003C\u002Fli>\n\u003Cli>Click the “Embed” button. WordPress will automatically display the unformatted content.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The shortcut to this is to simply paste the URL at the end of the page\u002Fpost where it says “Type \u002F to choose a block”. WordPress will automatically convert your URL to an embed block.\u003C\u002Fp>\n\u003Cp>Files can be embedded from your site, from the WordPress repository or from Github. Embedded URLs are transformed internally to the appropriate format.\u003C\u002Fp>\n\u003Cp>\u003Cem>From your site\u003C\u002Fem>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>https:\u002F\u002F\u003Cyour_site_url>\u002Fplugins\u002F\u003Cplugin_slug>\u002Freadme.txt\nhttps:\u002F\u002F\u003Cyour_site_url>\u002Fthemes\u002F\u003Ctheme_name>\u002Freadme.txt\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cem>From the WordPress Repository\u003C\u002Fem>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>https:\u002F\u002Fps.w.org\u002F\u003Cplugin_slug>\u002Freadme.txt\nhttps:\u002F\u002Fplugins.svn.wordpress.org\u002F\u003Cplugin_slug>\u002Freadme.txt\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cem>From a GitHub Repository\u003C\u002Fem>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>https:\u002F\u002Fgithub.com\u002F\u003Cowner>\u002F\u003Crepository>\u002Fblob\u002Fmain\u002Freadme.md\nhttps:\u002F\u002Fgithub.com\u002F\u003Cowner>\u002F\u003Crepository>\u002Fmain\u002Freadme.md\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cem>To load only specific sections of the readme file, append a fragment to the url:\u003C\u002Fem>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>https:\u002F\u002F\u003Cyour_site_url>\u002Fplugins\u002F\u003Cplugin_slug>\u002Freadme.txt#allheaders\nhttps:\u002F\u002Fps.w.org\u002F\u003Cplugin_slug>\u002Freadme.txt#description\nhttps:\u002F\u002Fgithub.com\u002F\u003Cowner>\u002F\u003Crepository>\u002Fmain\u002Freadme.md#screenshots\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Readme Format\u003C\u002Fh4>\n\u003Cp>{eac}Readme expects a well-formed readme.txt file that follows the \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Fplugins\u002Fwordpress-org\u002Fhow-your-readme-txt-works\" rel=\"nofollow ugc\">WordPress readme file standard\u003C\u002Fa>…\u003C\u002Fp>\n\u003Ch3>title\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>header: value\nheader: value\nshort Description\u003Ch3>section\u003C\u002Fh3>    = sub-section =\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>…but supports some extensions to that standard:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>Author & Author URI\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>Author\u003C\u002Fcode> header may be a simple name or a markdown link:\n\u003Cul>\n\u003Cli>\u003Ccode>[Author](Author URI)\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>The \u003Ccode>Author\u003C\u002Fcode> & \u003Ccode>Author URI\u003C\u002Fcode> headers, if present, are combined as a markdown \u003Ccode>[Author](Author URI)\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Homepage\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Looks for \u003Ccode>Homepage\u003C\u002Fcode> or \u003Ccode>Plugin URI\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Version\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Looks for \u003Ccode>Version\u003C\u002Fcode> or \u003Ccode>Stable tag\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Contributors\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>profileId\u003C\u002Fcode> – wordpress profile (standard)\u003C\u002Fli>\n\u003Cli>\u003Ccode>profileId@youremaildomain.com\u003C\u002Fcode> – gravatar profile\u003C\u002Fli>\n\u003Cli>\u003Ccode>profileId@wordpress\u003C\u002Fcode> – wordpress profile\u003C\u002Fli>\n\u003Cli>\u003Ccode>profileId@gravatar\u003C\u002Fcode> – gravatar profile\u003C\u002Fli>\n\u003Cli>\u003Ccode>profileId@github\u003C\u002Fcode> – github profile\u003C\u002Fli>\n\u003Cli>\u003Ccode>[display name](mailto:email@address.com)\u003C\u002Fcode> or \u003Ccode>[display name](http:\u002F\u002Fwww.gravatar.com\u002FprofileId\u002F)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>[display name](https:\u002F\u002Fprofiles.wordpress.org\u002FprofileId\u002F)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>[your name]((http:\u002F\u002Fyour\u002Fprofile\u002Furl)\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>A “banner” section may be included between the top title line and the first header line.\u003C\u002Fp>\n\u003Cp>\u003Ccode>\u003Ch3>title\u003C\u002Fh3>   [![banner](\u002F\u002Fimage_url)](\u002F\u002Flink_url)\u003Cbr \u002F>\nheader: value\u003Cbr \u002F>\nheader: value\u003Cbr \u002F>\nshort Description\u003Ch3>section\u003C\u002Fh3>    = sub-section =\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>The header block may be enclosed in an html \u003Ccode>\u003Cheader>\u003C\u002Fcode> or \u003Ccode>\u003Cdetails>\u003C\u002Fcode> tag, opening and closing each on a single line. These tags are ignored by the eacParseReadme parser but may be beneficial if posting your readme file elseware. See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEarthAsylum\u002FeacReadme\" rel=\"nofollow ugc\">{eac}Readme on Github\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote>\n\u003Cp>Note: these extensions are not supported by the WordPress Plugin Repository.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>{eac}Readme supports standard markdown (readme.md) formatting for section identification.\u003Cbr \u002F>\n+   \u003Ccode>=== title ===\u003C\u002Fcode> and \u003Ccode>## title\u003C\u002Fcode> are equivalent\u003Cbr \u002F>\n+   \u003Ccode>== section ==\u003C\u002Fcode> and \u003Ccode>### section\u003C\u002Fcode> are equivalent\u003Cbr \u002F>\n+   \u003Ccode>= sub-section =\u003C\u002Fcode> and \u003Ccode>#### sub-section\u003C\u002Fcode> are equivalent\u003C\u002Fp>\n\u003Ch4>Output HTML\u003C\u002Fh4>\n\u003Cp>When retrieving the header block with …\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]All Headers[\u002FeacReadme] or `\\eacParseReadme::getAllHeaders()`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or when retrieving all sections with …\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]All Sections[\u002FeacReadme] or `\\eacParseReadme::getAllSections()`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or when retrieving the entire document with …\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[eacReadme]Document[\u002FeacReadme] or `\\eacParseReadme::getDocument()`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Additional html tags and classes are added, including wrapping blocks within a \u003Ccode>\u003Cdetails>\u003C\u002Fcode> tags, adding \u003Ccode>readme-*\u003C\u002Fcode> class names, and adding \u003Ccode>\u003Ca>\u003C\u002Fcode> anchor links.\u003C\u002Fp>\n\u003Ch4>WordPress Actions\u003C\u002Fh4>\n\u003Cp>3rd-party actors may load and use the parser class included in {eac}Readme…\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    do_action('eacReadme_load_parser');     \u002F\u002F loads \\eacParseReadme static class\n    if (class_exists('\\eacParseReadme'))\n    {\n        \\eacParseReadme::loadFile($readme,$context);\n        $html_document  = \\eacParseReadme::getDocument();\n        $title          = \\eacParseReadme::getTitle();\n        $version        = \\eacParseReadme::getVersion();\n        $donations      = \\eacParseReadme::getHeader('donate_link');\n        $description    = \\eacParseReadme::getSection('description');\n    }= Additional Information =\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>{eac}Readme is an extension plugin to and requires installation and registration of \u003Ca href=\"https:\u002F\u002FeacDoojigger.earthasylum.com\u002F\" rel=\"nofollow ugc\">{eac}Doojigger\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>{eac}Readme uses \u003Ca href=\"http:\u002F\u002Fparsedown.org\u002F\" rel=\"nofollow ugc\">Parsedown 1.7.4\u003C\u002Fa>, Copyright (c) 2013-2018 \u003Ca href=\"erusev.com\" rel=\"nofollow ugc\">Emanuil Rusev\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\n\u003Cp>{eac}Readme uses \u003Ca href=\"https:\u002F\u002Fprismjs.com\u002F\" rel=\"nofollow ugc\">Prism syntax highlighter\u003C\u002Fa>, Copyright (c) 2012 Lea Verou\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fswregistry.earthasylum.com\u002Fsoftware-taxonomy\u002F\" rel=\"nofollow ugc\">{eac}SoftwareRegistry Software Product Taxonomy\u003C\u002Fa> plugin uses {eac}Readme to parse readme markdown files hosted on Github to provide plugin information and automated updates to WordPress for self-hosted plugins.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Copyright\u003C\u002Fh3>\n\u003Ch4>Copyright © 2019-2025, EarthAsylum Consulting, distributed under the terms of the GNU GPL.\u003C\u002Fh4>\n\u003Cp>This program is free software: you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should receive a copy of the GNU General Public License along with this program. If not, see \u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002F\u003C\u002Fa>.\u003C\u002Fp>\n","{eac}Readme loads and translates a WordPress markdown 'readme' file providing shortcodes and embedding URLs to access header lines and section blocks.",0,3290,"2025-08-08T11:30:00.000Z","6.8.5","5.8","7.4",[18,19,20,21,22],"code-highlighting","eacdoojigger","markdown","parsedown","readme","https:\u002F\u002Feacdoojigger.earthasylum.com\u002Feacreadme\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.5.1.zip",100,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":25,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"kevinburkholder",11,60,30,94,"2026-05-20T02:04:28.330Z",[38,59,79,96,114],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":25,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":51,"tags":52,"homepage":51,"download_link":55,"security_score":56,"vuln_count":57,"unpatched_count":11,"last_vuln_date":58,"fetched_at":27},"markdown-shortcode","Markdown Shortcode","0.2.3","JHoppe","https:\u002F\u002Fprofiles.wordpress.org\u002Fjhoppe\u002F","\u003Cp>Damn simple [markdown]#via shortcode[\u002Fmarkdown] for wordpress.\u003Cbr \u002F>\nThis plugin uses \u003Ca href=\"http:\u002F\u002Fparsedown.org\u002F\" rel=\"nofollow ugc\">parsedown\u003C\u002Fa> and \u003Ca href=\"http:\u002F\u002Fhighlightjs.org\" rel=\"nofollow ugc\">highlight.js\u003C\u002Fa>. Zero configuration.\u003C\u002Fp>\n\u003Cp>Write this into the editor:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[markdown]  \n#h1\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>h2\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>text  \n____source code (two ore more underscores will be replaced by empty spaces)  \n____source code (two ore more underscores will be replaced by empty spaces)  \n\n    `javascript\nsource code\n    `\n[\u002Fmarkdown]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>and the shortcode content will be parsed with parsedown. Syntax highlighting will appear for the source codes.\u003C\u002Fp>\n\u003Cp>This plugin is available at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJohannesHoppe\u002Fmarkdown-shortcode\" rel=\"nofollow ugc\">github\u003C\u002Fa>, too.\u003Cbr \u002F>\nPlease \u003Cstrong>report issues at github\u003C\u002Fstrong>, pull requests are welcome, too!\u003C\u002Fp>\n","Damn simple markdown for wordpress via shortcode, uses parsedown (parsedown.org) and highlight.js (highlightjs.org).",70,3161,3,"2025-09-21T21:19:00.000Z","6.7.5","",[53,20,21,54],"highlight-js","shortcode","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmarkdown-shortcode.zip",99,1,"2025-09-25 17:54:41",{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":67,"downloaded":68,"rating":25,"num_ratings":69,"last_updated":70,"tested_up_to":71,"requires_at_least":72,"requires_php":51,"tags":73,"homepage":76,"download_link":77,"security_score":78,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"github-readme","Github README","0.2.0","Jason Stallings","https:\u002F\u002Fprofiles.wordpress.org\u002Foctalmage\u002F","\u003Cp>Github README is a plugin that allows you to embed markdown from GitHub in a page or post using a simple shortcode.\u003C\u002Fp>\n\u003Cp>Usage:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>github_readme\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This shortcode embeds the project’s readme.\u003C\u002Fp>\n\u003Cp>[github_readme repo=”octalmage\u002FMarknote”]\u003C\u002Fp>\n\u003Cp>You can also trim lines from the top of the readme using the “trim” option:\u003C\u002Fp>\n\u003Cp>[github_readme repo=”octalmage\u002FMarknote” trim=”3″]\u003C\u002Fp>\n\u003Cp>This is useful for removing titles since your page\u002Fpost will most likely already have one.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>github_markdown\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This shortcode embeds any markdown file found in the repository.\u003C\u002Fp>\n\u003Cp>[github_markdown repo=”octalmage\u002FMarknote” file=”README.md”]\u003C\u002Fp>\n\u003Cp>trim, branch, and cache (seconds to cache) also supported.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>github_wikipage\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This shortcode embeds pages from a project’s wiki.\u003C\u002Fp>\n\u003Cp>[github_wikipage repo=”octalmage\u002FMarknote” page=”Syntax”]\u003C\u002Fp>\n\u003Cp>trim and cache also supported.\u003C\u002Fp>\n","Easily embed GitHub READMEs in pages\u002Fposts.",20,3281,4,"2016-06-07T15:07:00.000Z","4.5.33","3.0.1",[74,75,20,22,54],"embed","github","https:\u002F\u002Fgithub.com\u002Foctalmage\u002Fgithub-readme","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgithub-readme.zip",85,{"slug":80,"name":81,"version":82,"author":83,"author_profile":84,"description":85,"short_description":86,"active_installs":87,"downloaded":88,"rating":11,"num_ratings":11,"last_updated":89,"tested_up_to":90,"requires_at_least":91,"requires_php":51,"tags":92,"homepage":94,"download_link":95,"security_score":78,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"readme-generator","Readme Generator","1.0.2","paulstuttard","https:\u002F\u002Fprofiles.wordpress.org\u002Fpaulstuttard\u002F","\u003Cp>This plugin enables plugin authors to write their plugin readme content inside a page (or set of pages) or post on their site and then at the click of a button generate the associated valid readme.txt file automatically.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Simple HTML to Markdown conversion\u003C\u002Fli>\n\u003Cli>Helper widget on Post\u002FPage edit screen to set plugin specific options and Generate the readme\u003C\u002Fli>\n\u003Cli>Global options to set the default values and configure the plugin’s behaviour\u003C\u002Fli>\n\u003Cli>Facility to insert a ‘starter’ template into the current post\u003C\u002Fli>\n\u003Cli>Basic i18n verification and .pot file generation\u003C\u002Fli>\n\u003Cli>Handles single page based readme or page with children\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Latest Version – 1.0.2\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Add support for Generation of contextual Help Data Files\u003C\u002Fli>\n\u003Cli>Minor Bug Fixes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Future Updates\u003C\u002Fh3>\n\u003Cp>Some improvements that I hope to make to the plugin:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Take content from ‘Visual’ Post\u002FPage edit\u003C\u002Fli>\n\u003Cli>Add popup widget when post displayed showing Header details, and links\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Options\u003C\u002Fh3>\n\u003Cp>The plugin has a number of options some are saved locally with individual posts\u002Fpages and some are global and are used to modify the behaviour of the plugin.\u003C\u002Fp>\n\u003Ch4>Plugin Name\u003C\u002Fh4>\n\u003Cp>Sets the name of the Plugin for which the readme.txt file is to be generated. This options is saved for each plugin page\u002Fpost.\u003C\u002Fp>\n\u003Ch4>Contributors\u003C\u002Fh4>\n\u003Cp>This sets the list of contributors for the plugin. This option is saved for each plugin page\u002Fpost, and the default for this value can be set in the global options.\u003C\u002Fp>\n\u003Ch4>Donate Link\u003C\u002Fh4>\n\u003Cp>This sets the donate link for the plugin. This option is saved for each plugin page\u002Fpost, and the default for this value can be set in the global options.\u003C\u002Fp>\n\u003Ch4>Tags\u003C\u002Fh4>\n\u003Cp>This sets the list of tags for the plugin. This option is saved for each plugin page\u002Fpost, and the default for this value can be set in the global options.\u003C\u002Fp>\n\u003Ch4>Required Version\u003C\u002Fh4>\n\u003Cp>This sets the minimum required version of WordPress that the plugin will work with. This option is saved for each plugin page\u002Fpost, and the default for this value can be set in the global options.\u003C\u002Fp>\n\u003Ch4>Tested Version\u003C\u002Fh4>\n\u003Cp>This sets the highest version of WordPress that the plugin has been tested against. This option is saved for each plugin page\u002Fpost, and the default for this value can be set in the global options.\u003C\u002Fp>\n\u003Ch4>Stable Version\u003C\u002Fh4>\n\u003Cp>This sets the stable version of the plugin that should be downloaded by users. This option is saved for each plugin page\u002Fpost.\u003C\u002Fp>\n\u003Ch4>Readme Location\u003C\u002Fh4>\n\u003Cp>The plugin subdirectory where the ‘readme.txt’ should be written, usually set to the plugin directory. This is relative to the WordPress plugin directory ‘wp-content\u002Fplugins’.\u003C\u002Fp>\n\u003Ch4>Ignore Sections\u003C\u002Fh4>\n\u003Cp>If there are any sections or sub-sections that are in the post that should not be present in the readme.txt, then enter their names here as a comma separated list.\u003C\u002Fp>\n\u003Ch4>Heading Type\u003C\u002Fh4>\n\u003Cp>This global setting, defines what html element the plugin will use to define the plugin top level headings & sections.\u003C\u002Fp>\n\u003Ch4>Sub-Heading Type\u003C\u002Fh4>\n\u003Cp>This global setting, defines what html element the plugin will use to define the plugin sub-headings & sections.\u003C\u002Fp>\n\u003Ch4>Plugin Category\u003C\u002Fh4>\n\u003Cp>If all your plugin posts are of a specific category, then put the category’s slug or ID’s in this setting so that the Readme Generator is enabled by default for these posts.\u003C\u002Fp>\n\u003Ch4>Parent Page\u003C\u002Fh4>\n\u003Cp>If all your plugin posts are children of a specific post\u002Fpage, then put the post’s slug or ID’s in this setting so that the Readme Generator is enabled by default for these posts.\u003C\u002Fp>\n\u003Ch4>Readme Filename\u003C\u002Fh4>\n\u003Cp>The name of the file that the Readme Generator will create, by default this is ‘readme.txt’, if you want to keep your existing readme.txt set this to something else.\u003C\u002Fp>\n\u003Ch4>Parse Sub-Pages\u003C\u002Fh4>\n\u003Cp>If this option is selected then it will also append any pages that are children of the current page to the readme.txt file.\u003C\u002Fp>\n\u003Ch4>Generate POT\u003C\u002Fh4>\n\u003Cp>The plugin can generate a .pot file, however this is quiet primitive, enable this option to generate the POT file. This option is saved for each plugin page\u002Fpost, and the default for this value can be set in the global options.\u003C\u002Fp>\n\u003Ch4>POT Filename\u003C\u002Fh4>\n\u003Cp>The name of the .pot file that the Readme Generator will create, by default this is ‘i18n\u002F%SLUG%.pot’. The location is relative to the directory of the ‘readme.txt’, and the phrase %SLUG% will be replaced with the Plugin Name (e.g. plugin-name).\u003C\u002Fp>\n\u003Ch3>Translations\u003C\u002Fh3>\n\u003Cp>The plugin comes with translation support but as yet no translations are included. Please refer to the WordPress Codex for more information about activating the translation. If you want to help to translate the plugin to your language, please have a look at the i18n\u002Freadme-gen.pot file which contains all definitions and may be used to create a language specific .po file. If you do create a translation please contact me and I will add it to the plugin ready for the next update.\u003C\u002Fp>\n","A simple plugin to convert a HTML post or page content into a plugin readme.txt file.",10,1749,"2013-09-12T13:00:00.000Z","3.6.1","3.1",[93],"readme-txt-plugin-markdown","http:\u002F\u002Fwww.houseindorset.co.uk\u002Fplugins\u002Freadme-generator","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Freadme-generator.1.0.2.zip",{"slug":97,"name":98,"version":99,"author":100,"author_profile":101,"description":102,"short_description":103,"active_installs":11,"downloaded":104,"rating":11,"num_ratings":11,"last_updated":105,"tested_up_to":106,"requires_at_least":107,"requires_php":108,"tags":109,"homepage":112,"download_link":113,"security_score":78,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"metaparsedown","MetaParsedown","1.0.0","pagerange","https:\u002F\u002Fprofiles.wordpress.org\u002Fpagerange\u002F","\u003Cp>Import markdown and markdown-extra documents to WordPress posts and pages, output as HTML, parse and save YAML front matter to post_meta, tags, and (optionally) the posts tables.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Built on MetaParsedown, Parsedown and Symfony YAML components\u003C\u002Fli>\n\u003Cli>Supports docments in both Markdown and Markdown-Extra formats\u003C\u002Fli>\n\u003Cli>Easy to use\u003C\u002Fli>\n\u003Cli>Lighweight\u003C\u002Fli>\n\u003Cli>Optionally style markdown code snippets for syntax highlighting\u003C\u002Fli>\n\u003Cli>Maintain cannonical markdown documents through your favourite git repository\u003C\u002Fli>\n\u003Cli>Works with both Gutenberg and classic wordpress editors\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How to use\u003C\u002Fh3>\n\u003Cp>Simply add the \u003Ccode>metaparsedown\u003C\u002Fcode> shortcode to your post, identifying the markdown document in the \u003Ccode>url\u003C\u002Fcode> attribute:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[metaparsedown url='https:\u002F\u002Fgitlab.com\u002Fpagerange\u002Fdocs\u002Fraw\u002Fmaster\u002Fmarkdown\u002Ftest_markdown.md' \u002F]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Optionally, parse and save markdown YAML front matter to the post_meta table by adding the \u003Ccode>meta\u003C\u002Fcode> attribute.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[metaparsedown url='https:\u002F\u002Fgitlab.com\u002Fpagerange\u002Fdocs\u002Fraw\u002Fmaster\u002Fmarkdown\u002Ftest_markdown.md' meta=\"true\" \u002F]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Optionally, overwrite the post’s ‘post_title’ and ‘post_excerpt’ fields with YAML values by adding the \u003Ccode>overwrite\u003C\u002Fcode> attribute.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[metaparsedown url='https:\u002F\u002Fgitlab.com\u002Fpagerange\u002Fdocs\u002Fraw\u002Fmaster\u002Fmarkdown\u002Ftest_markdown.md' meta=\"true\" overwrite=\"true\" \u002F]\u003Ch3>Support\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Add issues at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpagerange\u002Fmetaparsedown-wordpress\u002Fissues\" rel=\"nofollow ugc\">https:\u002F\u002Fgithub.com\u002Fpagerange\u002Fmetaparsedown-wordpress\u002Fissues\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Donate\u003C\u002Fh3>\n\u003Cp>Donate via Paypal at \u003Ca href=\"http:\u002F\u002Fpagerange.com\u002Fprojects\u002Fwordpress\u002Fmetaparsedown\" rel=\"nofollow ugc\">http:\u002F\u002Fpagerange.com\u002Fprojects\u002Fwordpress\u002Fmetaparsedown\u003C\u002Fa>\u003C\u002Fp>\n","Import markdown and markdown-extra documents to Wordpress posts and pages, output as HTML, parse and save YAML front matter to post_meta, tags, and (o &hellip;",1233,"2019-11-05T02:35:00.000Z","5.2.24","5.0","7.0",[20,110,97,21,111],"markdown-extra","parsedown-extra","http:\u002F\u002Fpagerange.com\u002Fprojects\u002Fwordpress\u002Fmetaparsedown","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmetaparsedown.1.0.0.zip",{"slug":115,"name":116,"version":117,"author":118,"author_profile":119,"description":120,"short_description":121,"active_installs":122,"downloaded":123,"rating":25,"num_ratings":57,"last_updated":124,"tested_up_to":14,"requires_at_least":125,"requires_php":16,"tags":126,"homepage":51,"download_link":131,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"import-markdown","Import Markdown – Versatile Markdown Importer","1.15","DAEXT","https:\u002F\u002Fprofiles.wordpress.org\u002Fdaext\u002F","\u003Cp>Import Markdown lets you easily generates posts based on Markdown files.\u003C\u002Fp>\n\u003Ch4>Ultimate Markdown\u003C\u002Fh4>\n\u003Cp>We also run a WordPress plugin that integrates Markdown in the block editor. For more information, check out \u003Ca href=\"https:\u002F\u002Fdaext.com\u002Fultimate-markdown\u002F\" rel=\"nofollow ugc\">Ultimate Markdown\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Video Tutorial\u003C\u002Fh4>\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\u002F3EhQ4Xjzg6s?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\u003Ch4>Speed up you workflow with Markdown\u003C\u002Fh4>\n\u003Cp>Markdown is a lightweight and easy-to-use syntax for creating HTML. Let’s see some of the advantages of using this emerging format with the Import Markdown plugin:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Markdown is extremely easy to use, the tokens available with the Markdown syntax can be learned in less than 30 minutes.\u003C\u002Fli>\n\u003Cli>Markdown translates to perfect HTML. No missing closing tags, no improperly nested tags, no blocks left without containers.\u003C\u002Fli>\n\u003Cli>The Markdown files are simple text files editable with any text or code editor, on any operative system.\u003C\u002Fli>\n\u003Cli>The Markdown files are extremely lightweight text files which don’t need to be compressed to be transported or sent on the internet.\u003C\u002Fli>\n\u003Cli>Writing with the Markdown syntax requires and average of 25% less characters than writing HTML.\u003C\u002Fli>\n\u003Cli>You can stop thinking about html and focus on what’s important, the content.\u003C\u002Fli>\n\u003Cli>You can start writing your posts in your personal distraction free editor, like a simple text\u002Fcode editor customized for your needs or one of the specific Markdown editors available on the market.\u003C\u002Fli>\n\u003Cli>Programmers no longer need to manually convert to HTML entities the problematic characters present in code snippets. The Markdown parsers do this job for you.\u003C\u002Fli>\n\u003Cli>With five included parser and three Markdown variations supported, this plugin can certainly satisfy even a Markdown expert who make use of any possibility provided by the syntax.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Five Markdown parsers and three markdown flavors\u003C\u002Fh4>\n\u003Cp>At this time there isn’t a clearly defined Markdown standard and different implementations are currently used on the web. For this reason this plugin doesn’t force you to adopt a specific Markdown syntax, but instead allows you to select your favorite parser between the five available.\u003C\u002Fp>\n\u003Cp>In the Import Markdown options you will be able to selected one of these five parser. In this list for each parser you have a reference to the supported syntax.\u003C\u002Fp>\n\u003Cp>Parsedown (\u003Ca href=\"https:\u002F\u002Fhelp.github.com\u002Fcategories\u002Fwriting-on-github\u002F\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>)\u003Cbr \u002F>\nParsedown Extra (\u003Ca href=\"https:\u002F\u002Fmichelf.ca\u002Fprojects\u002Fphp-markdown\u002Fextra\u002F\" rel=\"nofollow ugc\">Extra\u003C\u002Fa>)\u003Cbr \u002F>\nCebe Markdown (\u003Ca href=\"http:\u002F\u002Fdaringfireball.net\u002Fprojects\u002Fmarkdown\u002Fsyntax\" rel=\"nofollow ugc\">Traditional\u003C\u002Fa>)\u003Cbr \u002F>\nCebe Markdown GitHub (\u003Ca href=\"https:\u002F\u002Fhelp.github.com\u002Fcategories\u002Fwriting-on-github\u002F\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>)\u003Cbr \u002F>\nCebe Markdown Extra (\u003Ca href=\"https:\u002F\u002Fmichelf.ca\u002Fprojects\u002Fphp-markdown\u002Fextra\u002F\" rel=\"nofollow ugc\">Extra\u003C\u002Fa>)\u003C\u002Fp>\n\u003Ch4>Credits\u003C\u002Fh4>\n\u003Cp>This plugin make use of the following resources:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ferusev\u002Fparsedown\" rel=\"nofollow ugc\">Parsedown\u003C\u002Fa> licensed under the \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002Fmit-license.php\" rel=\"nofollow ugc\">MIT License\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcebe\u002Fmarkdown\" rel=\"nofollow ugc\">Cebe Markdown\u003C\u002Fa> licensed under the \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002Fmit-license.php\" rel=\"nofollow ugc\">MIT License\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgetcomposer.org\u002F\" rel=\"nofollow ugc\">Composer\u003C\u002Fa> licensed under the \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002Fmit-license.php\" rel=\"nofollow ugc\">MIT License\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fharvesthq\u002Fchosen\" rel=\"nofollow ugc\">Chosen\u003C\u002Fa> licensed under the \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002Fmit-license.php\" rel=\"nofollow ugc\">MIT License\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Legal Note\u003C\u002Fh4>\n\u003Cp>The name “Markdown” is used with the only purpose of making clear to the users the type of syntax supported by this plugin. You should not assume that the original author of the “Markdown” syntax, \u003Ca href=\"http:\u002F\u002Fdaringfireball.net\u002Fprojects\u002Fmarkdown\u002Fsyntax\" rel=\"nofollow ugc\">defined in 2004 with this post\u003C\u002Fa>, endorses this plugin.\u003C\u002Fp>\n","Import Markdown lets you easily generates posts based on Markdown files.",2000,34988,"2025-11-12T11:34:00.000Z","4.5",[127,128,20,129,130],"import","importer","markdown-import","markdown-importer","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fimport-markdown.1.15.zip",{"attackSurface":133,"codeSignals":168,"taintFlows":181,"riskAssessment":209,"analyzedAt":222},{"hooks":134,"ajaxHandlers":164,"restRoutes":165,"shortcodes":166,"cronEvents":167,"entryPointCount":11,"unprotectedCount":11},[135,141,145,149,154,157,161],{"type":136,"name":137,"callback":138,"file":139,"line":140},"action","admin_init","closure","Extensions\u002Fclass.eacReadme.extension.php",50,{"type":136,"name":142,"callback":143,"file":139,"line":144},"options_settings_page","admin_options_settings",54,{"type":136,"name":146,"callback":147,"file":139,"line":148},"options_settings_help","admin_options_help",56,{"type":150,"name":151,"callback":152,"priority":87,"file":139,"line":153},"filter","options_form_post_readme_code_language","reload_for_style",111,{"type":150,"name":155,"callback":152,"priority":87,"file":139,"line":156},"options_form_post_readme_code_style",112,{"type":150,"name":158,"callback":138,"file":159,"line":160},"eacDoojigger_load_extensions","eacReadme.php",47,{"type":150,"name":162,"callback":138,"file":159,"line":163},"eacReadme_load_parser",83,[],[],[],[],{"dangerousFunctions":169,"sqlUsage":175,"outputEscaping":177,"fileOperations":179,"externalRequests":11,"nonceChecks":11,"capabilityChecks":11,"bundledLibraries":180},[170],{"fn":171,"file":172,"line":173,"context":174},"unserialize","Extensions\u002Fclass.eacReadme.parser.php",781,"&&   ($content = unserialize($content)) )",{"prepared":11,"raw":11,"locations":176},[],{"escaped":48,"rawEcho":11,"locations":178},[],5,[],[182,201],{"entryPoint":183,"graph":184,"unsanitizedCount":57,"severity":200},"_getGithubProfile (Extensions\u002Fclass.eacReadme.parser.php:810)",{"nodes":185,"edges":197},[186,191],{"id":187,"type":188,"label":189,"file":172,"line":190},"n0","source","$_SERVER",823,{"id":192,"type":193,"label":194,"file":172,"line":195,"wp_function":196},"n1","sink","file_get_contents() [SSRF\u002FLFI]",826,"file_get_contents",[198],{"from":187,"to":192,"sanitized":199},false,"medium",{"entryPoint":202,"graph":203,"unsanitizedCount":57,"severity":200},"\u003Cclass.eacReadme.parser> (Extensions\u002Fclass.eacReadme.parser.php:0)",{"nodes":204,"edges":207},[205,206],{"id":187,"type":188,"label":189,"file":172,"line":190},{"id":192,"type":193,"label":194,"file":172,"line":195,"wp_function":196},[208],{"from":187,"to":192,"sanitized":199},{"summary":210,"deductions":211},"The \"eacreadme\" v1.5.1 plugin presents a mixed security picture. On the positive side, the plugin exhibits excellent practices regarding SQL queries, exclusively using prepared statements, and all identified output is properly escaped, minimizing risks of cross-site scripting (XSS). Furthermore, there is no recorded vulnerability history, suggesting a generally secure codebase over time. The absence of external HTTP requests and bundled libraries also reduces the attack surface related to third-party vulnerabilities.\n\nHowever, the static analysis reveals significant concerns. The presence of the `unserialize` function is a critical red flag. Without proper sanitization or validation of the data being unserialized, this function can lead to Remote Code Execution (RCE) vulnerabilities. While the taint analysis did not flag critical or high severity flows, the fact that there are \"flows with unsanitized paths\" warrants caution, especially when combined with `unserialize`. Additionally, the complete lack of nonce checks and capability checks, particularly if any functionality were to be exposed through future updates or undocumented means, represents a significant oversight in securing actions within the plugin.\n\nIn conclusion, while \"eacreadme\" v1.5.1 has strengths in its handling of SQL and output, the presence of `unserialize` and the absence of robust authentication and authorization mechanisms (nonces, capability checks) are significant weaknesses. The lack of historical vulnerabilities is a positive indicator but does not negate the inherent risks identified in the current code analysis.",[212,215,218,220],{"reason":213,"points":214},"Use of unserialize function without checks",15,{"reason":216,"points":217},"Taint flows with unsanitized paths found",8,{"reason":219,"points":179},"No nonce checks implemented",{"reason":221,"points":179},"No capability checks implemented","2026-04-16T13:36:43.134Z",{"wat":224,"direct":233},{"assetPaths":225,"generatorPatterns":228,"scriptPaths":229,"versionParams":230},[226,227],"\u002Fwp-content\u002Fplugins\u002Feacreadme\u002Fvendor\u002Fprism\u002Fprism.css","\u002Fwp-content\u002Fplugins\u002Feacreadme\u002Fvendor\u002Fprism\u002Fprism.js",[],[227],[231,232],"eacreadme\u002Fvendor\u002Fprism\u002Fprism.js?ver=","eacreadme\u002Fvendor\u002Fprism\u002Fprism.css?ver=",{"cssClasses":234,"htmlComments":276,"htmlAttributes":278,"restEndpoints":280,"jsGlobals":281,"shortcodeOutput":283},[235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275],"language-php","language-javascript","language-css","language-html","language-clike","token","comment","prolog","doctype","cdata","property","attr-name","string","entity","url","selector","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable","deleted","inserted","italic","bold","punctuation","symbol","namespace","builtin","constant","char","tag","operator","env","important","label",[277],"\u003C!-- {eac}Readme loads and translates a WordPress readme.txt file providing shortcodes to access header lines, section blocks, or the entire document. -->",[279],"data-language",[],[282],"Prism",[284,285],"[eacReadme]","[eacReadme plugin='eacreadme\u002Freadme.txt']",{"error":287,"url":288,"statusCode":289,"statusMessage":290,"message":290},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Feacreadme\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":292,"versions":293},17,[294,299,306,313,320,327,334,341,348,355,362,369,376,383,390,397,404],{"version":6,"download_url":24,"svn_tag_url":295,"released_at":26,"has_diff":199,"diff_files_changed":296,"diff_lines":26,"trac_diff_url":297,"vulnerabilities":298,"is_current":287},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.5.0&new_path=%2Feacreadme%2Ftags%2F1.5.1",[],{"version":300,"download_url":301,"svn_tag_url":302,"released_at":26,"has_diff":199,"diff_files_changed":303,"diff_lines":26,"trac_diff_url":304,"vulnerabilities":305,"is_current":199},"1.5.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.5.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.5.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.4.5&new_path=%2Feacreadme%2Ftags%2F1.5.0",[],{"version":307,"download_url":308,"svn_tag_url":309,"released_at":26,"has_diff":199,"diff_files_changed":310,"diff_lines":26,"trac_diff_url":311,"vulnerabilities":312,"is_current":199},"1.4.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.4.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.4.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.4.4&new_path=%2Feacreadme%2Ftags%2F1.4.5",[],{"version":314,"download_url":315,"svn_tag_url":316,"released_at":26,"has_diff":199,"diff_files_changed":317,"diff_lines":26,"trac_diff_url":318,"vulnerabilities":319,"is_current":199},"1.4.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.4.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.4.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.4.3&new_path=%2Feacreadme%2Ftags%2F1.4.4",[],{"version":321,"download_url":322,"svn_tag_url":323,"released_at":26,"has_diff":199,"diff_files_changed":324,"diff_lines":26,"trac_diff_url":325,"vulnerabilities":326,"is_current":199},"1.4.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.4.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.4.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.4.2&new_path=%2Feacreadme%2Ftags%2F1.4.3",[],{"version":328,"download_url":329,"svn_tag_url":330,"released_at":26,"has_diff":199,"diff_files_changed":331,"diff_lines":26,"trac_diff_url":332,"vulnerabilities":333,"is_current":199},"1.4.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.4.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.4.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.4.1&new_path=%2Feacreadme%2Ftags%2F1.4.2",[],{"version":335,"download_url":336,"svn_tag_url":337,"released_at":26,"has_diff":199,"diff_files_changed":338,"diff_lines":26,"trac_diff_url":339,"vulnerabilities":340,"is_current":199},"1.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.4.0&new_path=%2Feacreadme%2Ftags%2F1.4.1",[],{"version":342,"download_url":343,"svn_tag_url":344,"released_at":26,"has_diff":199,"diff_files_changed":345,"diff_lines":26,"trac_diff_url":346,"vulnerabilities":347,"is_current":199},"1.4.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.4.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.4.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.3.0&new_path=%2Feacreadme%2Ftags%2F1.4.0",[],{"version":349,"download_url":350,"svn_tag_url":351,"released_at":26,"has_diff":199,"diff_files_changed":352,"diff_lines":26,"trac_diff_url":353,"vulnerabilities":354,"is_current":199},"1.3.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.3.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.3.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.2.6&new_path=%2Feacreadme%2Ftags%2F1.3.0",[],{"version":356,"download_url":357,"svn_tag_url":358,"released_at":26,"has_diff":199,"diff_files_changed":359,"diff_lines":26,"trac_diff_url":360,"vulnerabilities":361,"is_current":199},"1.2.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.2.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.2.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.2.5&new_path=%2Feacreadme%2Ftags%2F1.2.6",[],{"version":363,"download_url":364,"svn_tag_url":365,"released_at":26,"has_diff":199,"diff_files_changed":366,"diff_lines":26,"trac_diff_url":367,"vulnerabilities":368,"is_current":199},"1.2.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.2.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.2.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.2.4&new_path=%2Feacreadme%2Ftags%2F1.2.5",[],{"version":370,"download_url":371,"svn_tag_url":372,"released_at":26,"has_diff":199,"diff_files_changed":373,"diff_lines":26,"trac_diff_url":374,"vulnerabilities":375,"is_current":199},"1.2.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.2.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.2.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.2.3&new_path=%2Feacreadme%2Ftags%2F1.2.4",[],{"version":377,"download_url":378,"svn_tag_url":379,"released_at":26,"has_diff":199,"diff_files_changed":380,"diff_lines":26,"trac_diff_url":381,"vulnerabilities":382,"is_current":199},"1.2.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.2.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.2.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.2.2&new_path=%2Feacreadme%2Ftags%2F1.2.3",[],{"version":384,"download_url":385,"svn_tag_url":386,"released_at":26,"has_diff":199,"diff_files_changed":387,"diff_lines":26,"trac_diff_url":388,"vulnerabilities":389,"is_current":199},"1.2.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.2.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.2.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.2.0&new_path=%2Feacreadme%2Ftags%2F1.2.2",[],{"version":391,"download_url":392,"svn_tag_url":393,"released_at":26,"has_diff":199,"diff_files_changed":394,"diff_lines":26,"trac_diff_url":395,"vulnerabilities":396,"is_current":199},"1.2.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.2.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.2.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.1.1&new_path=%2Feacreadme%2Ftags%2F1.2.0",[],{"version":398,"download_url":399,"svn_tag_url":400,"released_at":26,"has_diff":199,"diff_files_changed":401,"diff_lines":26,"trac_diff_url":402,"vulnerabilities":403,"is_current":199},"1.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Feacreadme%2Ftags%2F1.1.0&new_path=%2Feacreadme%2Ftags%2F1.1.1",[],{"version":405,"download_url":406,"svn_tag_url":407,"released_at":26,"has_diff":199,"diff_files_changed":408,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":409,"is_current":199},"1.1.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feacreadme.1.1.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Feacreadme\u002Ftags\u002F1.1.0\u002F",[],[]]