{"id":340852,"date":"2026-07-17T17:08:17","date_gmt":"2026-07-17T17:08:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lmdm-cardpress\/"},"modified":"2026-07-20T11:43:00","modified_gmt":"2026-07-20T11:43:00","slug":"lmdm-contributor-profile-card","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/lmdm-contributor-profile-card\/","author":5862608,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.3","requires":"6.9","requires_php":"8.0","requires_plugins":null,"header_name":"LMDM Contributor Profile Card","header_author":"Nic Bug","header_description":"Adds a dynamic Gutenberg block for cached WP.org profile cards. Inspired by Rodrigo Donini's CardPress project.","assets_banners_color":"a67686","last_updated":"2026-07-20 11:43:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/lassmichdasmachen.de","rating":0,"author_block_rating":0,"active_installs":0,"downloads":106,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"nicmare","date":"2026-07-20 11:43:00"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3611840,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3611840,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3611840,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3611840,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"lmdm\/contributor-profile-card":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"lmdm\/contributor-profile-card","title":"LMDM Contributor Profile Card","category":"widgets","icon":"id","description":"Shows a cached card for a public profile.","textdomain":"lmdm-contributor-profile-card","attributes":{"username":{"type":"string","default":""},"makeClickable":{"type":"boolean","default":false},"showUsername":{"type":"boolean","default":true},"showHandle":{"type":"boolean","default":true},"showJobTitle":{"type":"boolean","default":true},"showMemberSince":{"type":"boolean","default":true},"showCountry":{"type":"boolean","default":true},"showBadges":{"type":"boolean","default":true},"showGravatar":{"type":"boolean","default":true},"showPlugins":{"type":"boolean","default":false},"showPluginThumbnail":{"type":"boolean","default":true},"showPluginDescription":{"type":"boolean","default":true},"makePluginsClickable":{"type":"boolean","default":true},"pluginIconAboveTitle":{"type":"boolean","default":true},"textAlign":{"type":"string","default":"left"},"gravatarPlacement":{"type":"string","default":"left"},"avatarSize":{"type":"number","default":96},"textColor":{"type":"string"},"backgroundColor":{"type":"string"},"badgeBackgroundColor":{"type":"string","default":""},"badgeColor":{"type":"string","default":""}},"supports":{"align":["wide","full"],"html":false,"color":{"text":true,"background":true,"gradients":false,"__experimentalDefaultControls":{"text":true,"background":true}},"__experimentalBorder":{"color":true,"radius":true,"style":true,"width":true,"__experimentalDefaultControls":{"color":true,"radius":true,"style":true,"width":true}},"spacing":{"margin":true,"padding":true,"__experimentalDefaultControls":{"margin":true,"padding":true}},"shadow":true},"editorScript":"file:.\/index.js","editorStyle":"file:.\/editor.css","style":"file:.\/style.css"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3611840,"resolution":"1","location":"assets","locale":"","width":1280,"height":960},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3611840,"resolution":"2","location":"assets","locale":"","width":1280,"height":960}},"screenshots":[]},"plugin_section":[],"plugin_tags":[1220,148076,265321,435,272071],"plugin_category":[43],"plugin_contributors":[257089],"plugin_business_model":[],"class_list":["post-340852","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-gutenberg","plugin_tags-lmdm","plugin_tags-profile","plugin_tags-wporg","plugin_category-customization","plugin_contributors-nicmare","plugin_committers-nicmare"],"banners":{"banner":"https:\/\/ps.w.org\/lmdm-contributor-profile-card\/assets\/banner-772x250.jpg?rev=3611840","banner_2x":"https:\/\/ps.w.org\/lmdm-contributor-profile-card\/assets\/banner-1544x500.jpg?rev=3611840","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lmdm-contributor-profile-card\/assets\/icon-128x128.png?rev=3611840","icon_2x":"https:\/\/ps.w.org\/lmdm-contributor-profile-card\/assets\/icon-256x256.png?rev=3611840","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lmdm-contributor-profile-card\/assets\/screenshot-1.png?rev=3611840","caption":""},{"src":"https:\/\/ps.w.org\/lmdm-contributor-profile-card\/assets\/screenshot-2.png?rev=3611840","caption":""}],"raw_content":"<!--section=description-->\n<p>LMDM Contributor Profile Card adds a dynamic Gutenberg block that renders a compact profile card from a WordPress.org profile username.<\/p>\n\n<p>Profile data is read from the public profile page, cached with WordPress transients, and refreshed once per day. The block includes controls for visibility, colors, text alignment, Gravatar placement, and optional linking.<\/p>\n\n<h3>Plugin Features<\/h3>\n\n<p>\u2714  adds a dynamic Gutenberg block for public WordPress.org contributor profiles\n\u2714  accepts a WordPress.org username and normalizes profile URLs or @handles automatically\n\u2714  displays the contributor name, handle, job title, country, registration date, badges and Gravatar\n\u2714  allows each profile element to be shown or hidden individually\n\u2714  supports left, center and right text alignment\n\u2714  supports left, center and right Gravatar placement with an adjustable image size\n\u2714  includes controls for text, background, badge and border colors\n\u2714  supports spacing, border, shadow, wide and full-width block settings\n\u2714  can make the complete profile card link to the public WordPress.org profile\n\u2714  can optionally display plugins published by the contributor\n\u2714  includes controls for plugin icons, descriptions, links and icon placement\n\u2714  renders the block server-side with a live preview in the Gutenberg editor\n\u2714  caches profile and plugin data with WordPress transients for one day\n\u2714  can optionally download Gravatar images into the WordPress Media Library\n\u2714  restores remote Gravatar URLs and removes plugin-created media when local storage is disabled\n\u2714  removes plugin-owned transients, options and downloaded Gravatar images during uninstall\n\u2714  ships with English and German translation files<\/p>\n\n<h4>Credits<\/h4>\n\n<p>This plugin is inspired by Rodrigo Donini's original <a href=\"https:\/\/github.com\/donini\/wp-profiles-card\">CardPress project<\/a> which was unfortunately suspended.<\/p>\n\n<p>Rodrigo Donini's project demonstrated a friendly way to turn public WP.org profile information into shareable profile cards. This plugin adapts that idea for Gutenberg as a server-rendered block using WordPress transients for caching.<\/p>\n\n<p>This plugin is not affiliated with or maintained by Rodrigo Donini.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20did%20the%20idea%20for%20this%20block%20come%20from%3F\"><h3>Where did the idea for this block come from?<\/h3><\/dt>\n<dd><p>The idea and crawler approach are credited to Rodrigo Donini and the original wp-profiles-card repository:<\/p>\n\n<p>https:\/\/github.com\/donini\/wp-profiles-card<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20use%20rodrigo%20donini%27s%20service%3F\"><h3>Does this plugin use Rodrigo Donini's service?<\/h3><\/dt>\n<dd><p>No. The block fetches public profile data directly from the WP.org profile page for the username entered in the block.<\/p><\/dd>\n<dt id=\"how%20is%20profile%20data%20cached%3F\"><h3>How is profile data cached?<\/h3><\/dt>\n<dd><p>Profile data is cached with WordPress transients. Each username gets its own transient cache and the data is refreshed once per day.<\/p><\/dd>\n<dt id=\"can%20profile%20images%20be%20stored%20locally%3F\"><h3>Can profile images be stored locally?<\/h3><\/dt>\n<dd><p>Yes. The plugin settings include an optional \"Download Gravatar images in Media Library\" checkbox. When enabled, Gravatar images are downloaded into the WordPress media library and the cached profile card uses the local media URL instead of requesting the remote image on every render.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20enable%20local%20gravatar%20downloads%20later%3F\"><h3>What happens if I enable local Gravatar downloads later?<\/h3><\/dt>\n<dd><p>Existing profile card blocks and existing transient cache entries are handled automatically. When a cached profile is rendered and local Gravatar downloads are enabled, the plugin checks whether the matching image already exists in the media library. If it does not exist yet, the image is downloaded and the transient cache is updated to use the local URL.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20disable%20local%20gravatar%20downloads%20again%3F\"><h3>What happens if I disable local Gravatar downloads again?<\/h3><\/dt>\n<dd><p>The plugin switches known cached profiles back to their original remote Gravatar URL and deletes the Gravatar images it created in the media library.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20downloaded%20gravatar%20images%20when%20the%20plugin%20is%20deleted%3F\"><h3>What happens to downloaded Gravatar images when the plugin is deleted?<\/h3><\/dt>\n<dd><p>Downloaded Gravatar images created by this plugin are deleted during plugin uninstall.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20change%20the%20username%3F\"><h3>What happens when I change the username?<\/h3><\/dt>\n<dd><p>Changing the username uses a different transient key, so the block fetches and stores profile data for the new username.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>Initial version.<\/p>","raw_excerpt":"A dynamic block for cached public profile cards.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/340852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=340852"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nicmare"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=340852"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=340852"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=340852"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=340852"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=340852"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=340852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}