[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fzhgj4tMb8DfKXXXQ10f8xTsWuYKXdG_bPuOOQx8ySeo":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":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":20,"download_link":21,"security_score":22,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24,"vulnerabilities":25,"developer":26,"crawl_stats":23,"alternatives":33,"analysis":125,"fingerprints":160},"image-src","image_src","1.0.0","ryanve","https:\u002F\u002Fprofiles.wordpress.org\u002Fryanve\u002F","\u003Cp>Social media sites often use the \u003Cstrong>image_src\u003C\u002Fstrong> microformat for displaying link thumbnails. This simple plugin adds the image_src \u003Ca href=\"http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fexisting-rel-values\" rel=\"nofollow ugc\">rel value\u003C\u002Fa> to the code of your site. By default, the plugin applies only to singular views and it uses the \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FPost_Thumbnails\" rel=\"nofollow ugc\">featured image\u003C\u002Fa>. It only applies when an image is available. The \u003Ccode>'@image_src'\u003C\u002Fcode> filter hook allows for image customization and\u002For extending the plugin to other views.\u003C\u002Fp>\n","Add the \"image_src\" microformat.",10,1924,0,"2013-02-14T00:29:00.000Z","3.5.2","2.8.0","",[5,19],"microformats","http:\u002F\u002Fgithub.com\u002Fryanve\u002Fimage_src","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fimage-src.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":27,"total_installs":28,"avg_security_score":29,"avg_patch_time_days":30,"trust_score":31,"computed_at":32},5,50,88,30,86,"2026-04-05T04:28:12.854Z",[34,56,77,91,106],{"slug":35,"name":36,"version":37,"author":38,"author_profile":39,"description":40,"short_description":41,"active_installs":42,"downloaded":43,"rating":44,"num_ratings":45,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":17,"tags":49,"homepage":54,"download_link":55,"security_score":22,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24},"rich-contact-widget","Rich Contact Widget","1.4.6","Remy Perona","https:\u002F\u002Fprofiles.wordpress.org\u002Ftabrisrp\u002F","\u003Cp>This contact widget comes with microdatas & microformats markup, so that search engines can use it in their search results. They can help display contact information about your business or yourself below your website in search results, and even a map with your location, to improve your local SEO.\u003C\u002Fp>\n\u003Cp>The telephone & email are linked so that visitors can click on it and make a call (through mobile or skype) or send a mail from their computer or their mobile devices.\u003C\u002Fp>\n\u003Cp>You can also display a static image map of your location, linking to the address’ Google Maps page, and display a download link for a vCard.\u003C\u002Fp>\n\u003Cp>More informations on microdatas microformats can be found here :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>http:\u002F\u002Fschema.org\u003C\u002Fli>\n\u003Cli>http:\u002F\u002Fmicroformats.org\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Feedbacks and suggestions for improvement are greatly appreciated ! You can go to github to help : https:\u002F\u002Fgithub.com\u002FTabrisrp\u002Frich-contact-widget\u003C\u002Fp>\n\u003Cp>Rich Contact Widget requires PHP5 to work !\u003C\u002Fp>\n\u003Cp>Credits for translation :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Slovak by \u003Ca href=\"http:\u002F\u002Fwebhostinggeeks.com\u002Fblog\u002F\" rel=\"nofollow ugc\">WebHostingGeeks.com\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","A simple contact widget enhanced with microdatas & microformats tags for your local SEO",8000,83411,92,7,"2017-11-28T18:14:00.000Z","4.8.28","3.2.1",[50,51,19,52,53],"contact","microdata","rich-snippets","widget","http:\u002F\u002Fremyperona.fr\u002Frich-contact-widget\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frich-contact-widget.1.4.6.zip",{"slug":57,"name":58,"version":59,"author":60,"author_profile":61,"description":62,"short_description":63,"active_installs":64,"downloaded":65,"rating":66,"num_ratings":67,"last_updated":68,"tested_up_to":69,"requires_at_least":70,"requires_php":71,"tags":72,"homepage":75,"download_link":76,"security_score":44,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24},"micropub","Micropub","2.4.0","IndieWeb","https:\u002F\u002Fprofiles.wordpress.org\u002Findieweb\u002F","\u003Cp>Micropub is an open API standard that is used to create posts on your site using third-party clients. Web apps and native apps (e.g. iPhone, Android) can use Micropub to post short notes, photos, events or other posts to your own site, similar to a Twitter client posting to Twitter.com. Requires the IndieAuth plugin for authentication.\u003C\u002Fp>\n\u003Cp>Once you’ve installed and activated the plugin, try a client such as \u003Ca href=\"http:\u002F\u002Fquill.p3k.io\u002F\" rel=\"nofollow ugc\">Quill\u003C\u002Fa> to create a new post on your site. It walks you through the steps and helps you troubleshoot if you run into any problems. A list of known Micropub clients are available \u003Ca href=\"https:\u002F\u002Findieweb.org\u002FMicropub\u002FClients\" rel=\"nofollow ugc\">here\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Supports the full \u003Ca href=\"https:\u002F\u002Fmicropub.spec.indieweb.org\u002F\" rel=\"nofollow ugc\">Micropub spec\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>As this allows the creation of posts without entering the WordPress admin, it is not subject to any Gutenberg compatibility concerns per se. Posts created will not have Gutenberg blocks as they were not created with Gutenberg, but otherwise there should be no issues at this time.\u003C\u002Fp>\n\u003Cp>Available in the WordPress plugin directory at \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmicropub\u002F\" rel=\"ugc\">wordpress.org\u002Fplugins\u002Fmicropub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This project is placed in the public domain. You may also use it under the \u003Ca href=\"http:\u002F\u002Fcreativecommons.org\u002Fpublicdomain\u002Fzero\u002F1.0\u002F\" rel=\"nofollow ugc\">CC0 license\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>WordPress details\u003C\u002Fh3>\n\u003Ch4>Filters and hooks\u003C\u002Fh4>\n\u003Cp>Adds ten filters:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>before_micropub( $input )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called before handling a Micropub request. Returns \u003Ccode>$input\u003C\u002Fcode>, possibly modified.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_post_content( $post_content, $input )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called during the handling of a Micropub request. The content generation function is attached to this filter by default. Returns \u003Ccode>$post_content\u003C\u002Fcode>, possibly modified.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_post_type( $post_type = 'post', $input )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called during the creation of a Micropub post. This defaults to post, but allows for setting Micropub posts to a custom post type.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_tax_input( $tax_input, $input )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called during the creation of a Micropub post. This defaults to nothing but allows for a Micropub post to set a custom taxonomy.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_syndicate-to( $synd_urls, $user_id, $input )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called to generate the list of \u003Ccode>syndicate-to\u003C\u002Fcode> targets to return in response to a query. Returns \u003Ccode>$synd_urls\u003C\u002Fcode>, an array, possibly modified. This filter is empty by default\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_query( $resp, $input )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Allows you to replace a query response with your own customized version to add additional information\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_suggest_title( $mf2 )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Allows a suggested title to be generated. This can be used either to generate the post slug or for individuals who want to use it to set a WordPress title\u003C\u002Fp>\n\u003Cpre>\u003Ccode>indieauth_scopes( $scopes )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This returns scopes from a plugin implementing IndieAuth. This filter is empty by default.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>indieauth_response( $response )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This returns the token auth response from a plugin implementing IndieAuth. This filter is empty by default.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>pre_insert_micropub_post( $args )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This filters the arguments sent to wp_insert_post just prior to its insertion. If the ID key is set, then this will short-circuit the insertion to allow for custom database coding.\u003C\u002Fp>\n\u003Cp>…and two hooks:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>after_micropub( $input, $wp_args = null)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called after handling a Micropub request. Not called if the request fails (ie doesn’t return HTTP 2xx).\u003C\u002Fp>\n\u003Cpre>\u003Ccode>micropub_syndication( $ID, $syndicate_to )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Called only if there are syndication targets $syndicate_to for post $ID. $syndicate_to will be an array of UIDs that are verified as one or more of the UIDs added using the \u003Ccode>micropub_syndicate-to\u003C\u002Fcode> filter.\u003C\u002Fp>\n\u003Cp>Arguments:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$input\u003C\u002Fcode>: associative array, the Micropub request in \u003Ca href=\"http:\u002F\u002Fmicropub.net\u002Fdraft\u002Findex.html#json-syntax\" rel=\"nofollow ugc\">JSON format\u003C\u002Fa>. If the request was form-encoded or a multipart file upload, it’s converted to JSON format.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$wp_args\u003C\u002Fcode>: optional associative array. For creates and updates, this is the arguments passed to \u003Ccode>wp_insert_post\u003C\u002Fcode> or \u003Ccode>wp_update_post\u003C\u002Fcode>. For deletes and undeletes, \u003Ccode>args['ID']\u003C\u002Fcode> contains the post id to be (un)deleted. Null for queries.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Other\u003C\u002Fh4>\n\u003Cp>Stores \u003Ca href=\"http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fmicroformats2\" rel=\"nofollow ugc\">microformats2\u003C\u002Fa> properties in \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fpost_meta_Function_Examples\" rel=\"nofollow ugc\">post metadata\u003C\u002Fa> with keys prefixed by \u003Ccode>mf2_\u003C\u002Fcode>. \u003Ca href=\"https:\u002F\u002Findiewebcamp.com\u002FWordPress_Data#Microformats_data\" rel=\"nofollow ugc\">Details here.\u003C\u002Fa> All values are arrays; use \u003Ccode>unserialize()\u003C\u002Fcode> to deserialize them.\u003C\u002Fp>\n\u003Cp>Does \u003Cem>not\u003C\u002Fem> support multithreading. PHP doesn’t really either, so it generally won’t matter, but just for the record.\u003C\u002Fp>\n\u003Cp>Supports Stable Extensions to Micropub:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Findieweb.org\u002FMicropub-extensions#Post_Status\" rel=\"nofollow ugc\">Post Status\u003C\u002Fa> – Either \u003Ccode>published\u003C\u002Fcode> or \u003Ccode>draft\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Findieweb.org\u002FMicropub-extensions#Visibility\" rel=\"nofollow ugc\">Visibility\u003C\u002Fa> – Either \u003Ccode>public\u003C\u002Fcode> or \u003Ccode>private\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Findieweb.org\u002FMicropub-extensions#Query_for_Category.2FTag_List\" rel=\"nofollow ugc\">Query for Category\u002FTag List\u003C\u002Fa> – Supports querying for categories and tags.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Findieweb.org\u002FMicropub-extensions#Slug\" rel=\"nofollow ugc\">Slug\u003C\u002Fa> – Custom slug.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Findieweb.org\u002FMicropub-extensions#Query_for_Post_List\" rel=\"nofollow ugc\">Query for Post List\u003C\u002Fa> – Supports query for the last x number of posts.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Supports Proposed Extensions to Micropub:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F35\" rel=\"nofollow ugc\">Limit Parameter for Query\u003C\u002Fa> – Supports adding limit to any query designed to return a list of options to limit it to that number.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F36\" rel=\"nofollow ugc\">Offset Parameter for Query\u003C\u002Fa> – Supports adding offset to any query. Must be used with limit.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F34\" rel=\"nofollow ugc\">Filter Parameter for Query\u003C\u002Fa> – Supported for the Category\u002FTag List query.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F16\" rel=\"nofollow ugc\">Location Visiblity\u003C\u002Fa> – Either \u003Ccode>public\u003C\u002Fcode>, \u003Ccode>private\u003C\u002Fcode>, or \u003Ccode>protected\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F7\" rel=\"nofollow ugc\">Query for Supported Queries\u003C\u002Fa> – Returns a list of query parameters the endpoint supports\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F8\" rel=\"nofollow ugc\">Query for Supported Properties\u003C\u002Fa> – Returns a list of which supported experimental properties the endpoint supports so the client can choose to hide unsupported ones.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F15\" rel=\"nofollow ugc\">Discovery of Media Endpoint using Link Rel\u003C\u002Fa> – Adds a link header for the media endpoint\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F32\" rel=\"nofollow ugc\">Supports extended GEO URIs\u003C\u002Fa> – Supports adding arbitrary parameters to the GEO URI. Micropub converts this into an mf2 object. Supported as built into the Indigenous client.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F30\" rel=\"nofollow ugc\">Supports deleting uploaded media\u003C\u002Fa> – Supports action=delete&url=url on the media endpoint to delete files.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F14\" rel=\"nofollow ugc\">Supports querying for media on the media endpoint\u003C\u002Fa> and \u003Ca href=\"\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F37)\" rel=\"nofollow ugc\">optional URL parameter for same\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F45\" rel=\"nofollow ugc\">Supports filtering media queries by mime-type\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F8#issuecomment-536301952\" rel=\"nofollow ugc\">Return Visibility in q=config\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Deprecated Extensions still Supported:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F10\" rel=\"nofollow ugc\">Last Media Uploaded\u003C\u002Fa> – Supports querying for the last image uploaded …set to within the last hour. This was superseded by supporting \u003Ccode>q=source&limit=1\u003C\u002Fcode> on the media endpoint.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Extensions Supported by Other Plugins:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fmicropub-extensions\u002Fissues\u002F6\" rel=\"nofollow ugc\">Query for Location\u003C\u002Fa> – Suported by Simple Location if installed.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If an experimental property is not set to one of the noted options, the plugin will return HTTP 400 with body:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n  \"error\": \"invalid_request\",\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>WordPress has a \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FUploading_Files#About_Uploading_Files_on_Dashboard\" rel=\"nofollow ugc\">whitelist of file extensions that it allows in uploads\u003C\u002Fa>. If you upload a file in a Micropub extension that doesn’t have an allowed extension, the plugin will return HTTP 400 with body:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n  \"error\": \"invalid_request\",\n  \"error_description\": \"Sorry, this file is not permitted for security reasons.\"\n}\u003Ch3>Authentication and authorization\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>For reasons of security it is recommended that you only use this plugin on sites that implement HTTPS. Authentication is not built into this plugin.\u003C\u002Fp>\n\u003Cp>In order to use this, the IndieAuth plugin is required. Other plugins may be written in future as alternatives and will be noted if they exist.\u003C\u002Fp>\n\u003Ch3>Configuration Options\u003C\u002Fh3>\n\u003Cp>These configuration options can be enabled by adding them to your wp-config.php\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>define('MICROPUB_NAMESPACE', 'micropub\u002F1.0' )\u003C\u002Fcode> – By default the namespace for micropub is micropub\u002F1.0. This would allow you to change this for your endpoint\u003C\u002Fli>\n\u003Cli>\u003Ccode>define('MICROPUB_DISABLE_NAG', 1 )\u003C\u002Fcode> – Disable notices for insecure sites\u003C\u002Fli>\n\u003Cli>\u003Ccode>define('MICROPUB_DRAFT_MODE', 1 )\u003C\u002Fcode> – Override default post status and set to draft for debugging purposes.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Development\u003C\u002Fh3>\n\u003Cp>The canonical repo is http:\u002F\u002Fgithub.com\u002Findieweb\u002Fwordpress-micropub . Feedback and pull requests are welcome!\u003C\u002Fp>\n\u003Cp>To add a new release to the WordPress plugin directory, tag it with the version number and push the tag. It will automatically deploy.\u003C\u002Fp>\n\u003Cp>To set up your local environment to run the unit tests and set up PHPCodesniffer to test adherence to \u003Ca href=\"https:\u002F\u002Fmake.wordpress.org\u002Fcore\u002Fhandbook\u002Fcoding-standards\u002Fphp\u002F\" rel=\"nofollow ugc\">WordPress Coding Standards\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwimg\u002FPHPCompatibility\" rel=\"nofollow ugc\">PHP Compatibility\u003C\u002Fa>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Install \u003Ca href=\"https:\u002F\u002Fgetcomposer.org\" rel=\"nofollow ugc\">Composer\u003C\u002Fa>. Composer is only used for development and is not required to run the plugin.\u003C\u002Fli>\n\u003Cli>Run \u003Ccode>composer install\u003C\u002Fcode> which will install PHP Codesniffer, PHPUnit, the standards required, and all dependencies.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>To configure PHPUnit\u003C\u002Fp>\n\u003Col>\n\u003Cli>Install and start MySQL. (You may already have it.)\u003C\u002Fli>\n\u003Cli>Run \u003Ccode>.\u002Fbin\u002Finstall-wp-tests.sh wordpress_micropub_test root '' localhost\u003C\u002Fcode> to download WordPress and \u003Ca href=\"https:\u002F\u002Fdevelop.svn.wordpress.org\u002Ftrunk\u002Ftests\u002Fphpunit\u002F\" rel=\"nofollow ugc\">its unit test library\u003C\u002Fa>, into your systems tmp directory by default, and create a MySQL db to test against. \u003Ca href=\"http:\u002F\u002Fwp-cli.org\u002Fdocs\u002Fplugin-unit-tests\u002F\" rel=\"nofollow ugc\">Background here\u003C\u002Fa>. Feel free to use a MySQL user other than \u003Ccode>root\u003C\u002Fcode>. You can set the \u003Ccode>WP_CORE_DIR\u003C\u002Fcode> and \u003Ccode>WP_TESTS_DIR\u003C\u002Fcode> environment variables to change where WordPress and its test library are installed. For example, I put them both in the repo dir.\u003C\u002Fli>\n\u003Cli>Open \u003Ccode>wordpress-tests-lib\u002Fwp-tests-config.php\u003C\u002Fcode> and add a slash to the end of the ABSPATH value. No clue why it leaves off the slash; it doesn’t work without it.\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Run \u003Ccode>phpunit\u003C\u002Fcode> in the repo root dir. If you set \u003Ccode>WP_CORE_DIR\u003C\u002Fcode> and \u003Ccode>WP_TESTS_DIR\u003C\u002Fcode> above, you’ll need to set them for this too. You should see output like this:\u003C\u002Fp>\n\u003Cp>Installing…\u003Cbr \u002F>\n…\u003Cbr \u002F>\n1 \u002F 1 (100%)\u003Cbr \u002F>\nTime: 703 ms, Memory: 33.75Mb\u003Cbr \u002F>\nOK (1 test, 3 assertions)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>To set up PHPCodesniffer to test adherence to \u003Ca href=\"https:\u002F\u002Fmake.wordpress.org\u002Fcore\u002Fhandbook\u002Fcoding-standards\u002Fphp\u002F\" rel=\"nofollow ugc\">WordPress Coding Standards\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwimg\u002FPHPCompatibility\" rel=\"nofollow ugc\">PHP 5.6 Compatibility\u003C\u002Fa>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>To list coding standard issues in a file, run \u003Ccode>composer phpcs\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>If you want to try to automatically fix issues, run `composer phpcbf“.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>To automatically convert the readme.txt file to readme.md, you may, if you have installed composer as noted in the previous section, enter \u003Ccode>composer update-readme\u003C\u002Fcode> to have the .txt file converted\u003Cbr \u002F>\ninto markdown and saved to readme.md.\u003C\u002Fp>\n","Allows you to publish to your site using Micropub clients.",200,18718,100,4,"2024-06-13T04:39:00.000Z","6.5.8","4.9.9","5.6",[73,19,57,74],"indieweb","publish","https:\u002F\u002Fgithub.com\u002Findieweb\u002Fwordpress-micropub","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmicropub.2.4.0.zip",{"slug":78,"name":79,"version":80,"author":60,"author_profile":61,"description":81,"short_description":82,"active_installs":64,"downloaded":83,"rating":66,"num_ratings":84,"last_updated":85,"tested_up_to":86,"requires_at_least":87,"requires_php":17,"tags":88,"homepage":89,"download_link":90,"security_score":22,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24},"wp-uf2","Microformats 2","1.1.0","\u003Cp>It is only a very basic implementation, because not every element is accessible through actions or filters. It is better to use a theme that supports \u003Ca href=\"http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fmicroformats2\" rel=\"nofollow ugc\">Microformats 2\u003C\u002Fa> fully.\u003C\u002Fp>\n","Enhances your WordPress theme with Microformats 2 classes.",7365,2,"2018-02-18T21:54:00.000Z","4.9.29","4.7",[73,19],"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fwordpress-uf2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-uf2.1.1.0.zip",{"slug":92,"name":93,"version":94,"author":95,"author_profile":96,"description":97,"short_description":98,"active_installs":66,"downloaded":99,"rating":13,"num_ratings":13,"last_updated":100,"tested_up_to":48,"requires_at_least":101,"requires_php":17,"tags":102,"homepage":17,"download_link":105,"security_score":22,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24},"custom-image-src","Custom Image_Src","0.31","OverlappingElvis","https:\u002F\u002Fprofiles.wordpress.org\u002Foverlappingelvis\u002F","\u003Cp>If you’re sharing a link to a blog post on Facebook, having a thumbnail image makes for a much more effective share. If you have an image in the body of your post, Facebook will use that as the share image, but what if you don’t have any images in your post or want to specify an image you’re not using in the content? To solve this problem, I created a WordPress plugin that allows you to control which image shows when a link from your WordPress site is shared on Facebook.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Thanks to \u003Ca href=\"http:\u002F\u002Fwww.farinspace.com\u002Fwpalchemy-metabox\u002F\" rel=\"nofollow ugc\">Dimas Begunoff\u003C\u002Fa> for the amazingly helpful \u003Ca href=\"http:\u002F\u002Fwww.farinspace.com\u002Fwpalchemy-metabox\u002F\" rel=\"nofollow ugc\">WPAlchemy MetaBox PHP Class\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>I’m using the \u003Ccode>\u003Clink rel=\"image_src\" href=\"…\" \u002F>\u003C\u002Fcode> approach. If you’re adding more Open Graph meta tags to your \u003Ccode>\u003Chead>\u003C\u002Fcode>, you’d probably want to use \u003Ccode>\u003Cmeta property=\"og:image\" content=\"…\" \u002F>\u003C\u002Fcode>, but in that case you probably also don’t need this plugin.\u003C\u002Fli>\n\u003Cli>If you’re using any other plugins that add sharing info, Open Graph tags, or similar, this plugin will probably conflict with those.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For questions, comments, or bugs, you can reach me at \u003Ca href=\"http:\u002F\u002Ftwitter.com\u002FOverlapping\" rel=\"nofollow ugc\">@Overlapping\u003C\u002Fa> or OverlappingElvis [at] gmail [dot] com.\u003C\u002Fp>\n","Specify a custom sharing image for Facebook. You can upload an image, use the first image in the post, or use the post thumbnail.",11758,"2011-10-25T20:49:00.000Z","3.0",[103,5,104],"facebook","social-sharing","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-image-src.zip",{"slug":107,"name":108,"version":109,"author":110,"author_profile":111,"description":112,"short_description":113,"active_installs":30,"downloaded":114,"rating":13,"num_ratings":13,"last_updated":115,"tested_up_to":116,"requires_at_least":117,"requires_php":118,"tags":119,"homepage":123,"download_link":124,"security_score":66,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24},"mf2-feed","MF2 Feeds","3.1.1","Matthias Pfefferle","https:\u002F\u002Fprofiles.wordpress.org\u002Fpfefferle\u002F","\u003Cp>Provides a \u003Ca href=\"http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fmicroformats2-parsing\" rel=\"nofollow ugc\">Microformats2 JSON\u003C\u002Fa> “Feed” for every WordPress URL, and helps to allow other sites to get pre-parsed \u003Ca href=\"https:\u002F\u002Findieweb.org\u002Fjf2\" rel=\"nofollow ugc\">Microformats-JSON\u003C\u002Fa> even if the theme\u003Cbr \u002F>\ndoes not support Microformats2.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Findieweb.org\u002Fmicroformats\" rel=\"nofollow ugc\">Microformats2\u003C\u002Fa> are a key \u003Ca href=\"https:\u002F\u002Findieweb.org\u002FCategory:building-blocks\" rel=\"nofollow ugc\">building-block\u003C\u002Fa> of the IndieWeb, but it is very hard (if not impossible) to get Microformats2 as a core feature for all WordPress themes. There are several themes that are supporting Microformats2, but everyone should choose his prefered theme and should not be limited to use one of the \u003Ca href=\"https:\u002F\u002Findieweb.org\u002FWordPress\u002FThemes\" rel=\"nofollow ugc\">few community themes\u003C\u002Fa>. After \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Findieweb\u002Fwordpress-uf2\u002Fissues\u002F30\" rel=\"nofollow ugc\">a lot of discussions\u003C\u002Fa> and some different plugin approaches, we are trying to provide an alternate (\u003Ca href=\"https:\u002F\u002Findieweb.org\u002Frel-alternate\" rel=\"nofollow ugc\">\u003Ccode>rel=altenate\u003C\u002Fcode>\u003C\u002Fa>) representation of the microformatted HTML.\u003C\u002Fp>\n\u003Cp>The plugin is inspired by the URL design of \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faaronpk\u002Fp3k\" rel=\"nofollow ugc\">p3k\u003C\u002Fa> of \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faaronpk\" rel=\"nofollow ugc\">@aaronpk\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>p3k Example:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Original: \u003Ca href=\"https:\u002F\u002Faaronparecki.com\u002F2018\u002F07\u002F30\u002F18\u002Fxray-updates\" rel=\"nofollow ugc\">https:\u002F\u002Faaronparecki.com\u002F2018\u002F07\u002F30\u002F18\u002Fxray-updates\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Microformats2 JSON: \u003Ca href=\"https:\u002F\u002Faaronparecki.com\u002F2018\u002F07\u002F30\u002F18\u002Fxray-updates.json\" rel=\"nofollow ugc\">https:\u002F\u002Faaronparecki.com\u002F2018\u002F07\u002F30\u002F18\u002Fxray-updates.json\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>JF2: \u003Ca href=\"https:\u002F\u002Faaronparecki.com\u002F2018\u002F07\u002F30\u002F18\u002Fxray-updates.jf2\" rel=\"nofollow ugc\">https:\u002F\u002Faaronparecki.com\u002F2018\u002F07\u002F30\u002F18\u002Fxray-updates.jf2\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>WordPress Example:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Original: \u003Ca href=\"https:\u002F\u002Fnotiz.blog\u002F2013\u002F06\u002F18\u002Fthe-rise-of-the-indieweb\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fnotiz.blog\u002F2013\u002F06\u002F18\u002Fthe-rise-of-the-indieweb\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Microformats2 JSON: \u003Ca href=\"https:\u002F\u002Fnotiz.blog\u002F2013\u002F06\u002F18\u002Fthe-rise-of-the-indieweb\u002Ffeed\u002Fmf2\" rel=\"nofollow ugc\">https:\u002F\u002Fnotiz.blog\u002F2013\u002F06\u002F18\u002Fthe-rise-of-the-indieweb\u002Ffeed\u002Fmf2\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>JF2: \u003Ca href=\"https:\u002F\u002Fnotiz.blog\u002F2013\u002F06\u002F18\u002Fthe-rise-of-the-indieweb\u002Ffeed\u002Fjf2\" rel=\"nofollow ugc\">https:\u002F\u002Fnotiz.blog\u002F2013\u002F06\u002F18\u002Fthe-rise-of-the-indieweb\u002Ffeed\u002Fjf2\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Add Microformats2 Feeds for WordPress",3498,"2025-12-07T19:09:00.000Z","6.9.4","5.2","7.2",[73,120,121,19,122],"jf2","mf2","rel-alternate","http:\u002F\u002Fgithub.com\u002Findieweb\u002Fwordpress-mf2-feed\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmf2-feed.3.1.1.zip",{"attackSurface":126,"codeSignals":138,"taintFlows":149,"riskAssessment":150,"analyzedAt":159},{"hooks":127,"ajaxHandlers":134,"restRoutes":135,"shortcodes":136,"cronEvents":137,"entryPointCount":13,"unprotectedCount":13},[128],{"type":129,"name":130,"callback":131,"file":132,"line":133},"action","wp_head","closure","image-src.php",12,[],[],[],[],{"dangerousFunctions":139,"sqlUsage":140,"outputEscaping":142,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":13,"bundledLibraries":148},[],{"prepared":13,"raw":13,"locations":141},[],{"escaped":143,"rawEcho":143,"locations":144},1,[145],{"file":132,"line":146,"context":147},23,"raw output",[],[],{"summary":151,"deductions":152},"The \"image-src\" plugin version 1.0.0 exhibits a strong security posture based on the provided static analysis. There are no identified attack surface entry points, indicating that the plugin does not expose any direct interfaces like AJAX handlers, REST API routes, shortcodes, or cron events that could be exploited. Furthermore, the code analysis reveals no dangerous functions, raw SQL queries, file operations, or external HTTP requests. The absence of unsanitized taint flows and the use of prepared statements for all SQL queries are significant strengths.\n\nHowever, there are areas for improvement. The plugin has a 50% rate of proper output escaping, meaning half of its outputs are not properly escaped, which could lead to Cross-Site Scripting (XSS) vulnerabilities if user-supplied data is ever rendered directly. Additionally, the complete absence of nonce checks and capability checks across all potential (though currently zero) entry points is concerning. While the attack surface is currently zero, if any entry points are added in the future, these checks would be crucial for preventing Cross-Site Request Forgery (CSRF) and unauthorized access.\n\nThe plugin has no recorded vulnerability history, which is a positive indicator of its current security. This, combined with the clean static analysis, suggests a generally safe plugin. However, the lack of basic security checks like nonces and capability checks on any potential future entry points represents a weakness that should be addressed proactively to maintain a robust security profile as the plugin evolves.",[153,155,157],{"reason":154,"points":67},"Half of outputs are not properly escaped",{"reason":156,"points":27},"No nonce checks",{"reason":158,"points":27},"No capability checks","2026-03-16T23:42:23.420Z",{"wat":161,"direct":166},{"assetPaths":162,"generatorPatterns":163,"scriptPaths":164,"versionParams":165},[],[],[],[],{"cssClasses":167,"htmlComments":168,"htmlAttributes":169,"restEndpoints":170,"jsGlobals":171,"shortcodeOutput":172},[],[],[],[],[],[173],"\u003Clink rel='image_src' href='"]