{"id":25807,"date":"2013-10-30T19:01:16","date_gmt":"2013-10-30T19:01:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/author-or-user-image\/"},"modified":"2026-10-15T11:40:33","modified_gmt":"2026-10-15T11:40:33","slug":"author-or-user-image","status":"publish","type":"plugin","link":"https:\/\/co.wordpress.org\/plugins\/author-or-user-image\/","author":13267134,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0.0","stable_tag":"3.0.0","tested":"7.1.3","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Author or User Image","header_author":"Alimuzzaman Alim","header_description":"","assets_banners_color":"","last_updated":"2026-10-15 11:40:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/alim.dev","rating":3.4,"author_block_rating":0,"active_installs":20,"downloads":12637,"num_ratings":5,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"alimuzzamanalim","date":"2014-02-27 07:29:56","revision":866003},"1.0.2":{"tag":"1.0.2","author":"alimuzzamanalim","date":"2014-02-27 07:29:56","revision":866003},"1.0.3":{"tag":"1.0.3","author":"alimuzzamanalim","date":"2014-05-02 14:28:53","revision":906907},"1.0.4":{"tag":"1.0.4","author":"alimuzzamanalim","date":"2014-06-23 19:31:49","revision":937408},"2.0.0":{"tag":"2.0.0","author":"alimuzzamanalim","date":"2014-10-27 12:35:05","revision":1014676},"2.0.1":{"tag":"2.0.1","author":"alimuzzamanalim","date":"2014-10-29 13:59:24","revision":1015950},"2.0.2":{"tag":"2.0.2","author":"alimuzzamanalim","date":"2022-10-06 08:25:14","revision":2794932},"3.0.0":{"tag":"3.0.0","author":"alimuzzamanalim","date":"2026-10-15 11:40:33","revision":3748320}},"upgrade_notice":{"3.0.0":"<p>Major security and standards rewrite. Existing settings and legacy JPG avatars are migrated automatically and remain available as fallbacks.<\/p>"},"ratings":{"1":"2","2":0,"3":0,"4":0,"5":"3"},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2","1.0.3","1.0.4","2.0.0","2.0.1","2.0.2","3.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[132,129,14025,10105],"plugin_category":[44,50],"plugin_contributors":[83509],"plugin_business_model":[],"class_list":["post-25807","plugin","type-plugin","status-publish","hentry","plugin_tags-author","plugin_tags-avatar","plugin_tags-profile-image","plugin_tags-user-image","plugin_category-discussion-and-community","plugin_category-media","plugin_contributors-alimuzzamanalim","plugin_committers-alimuzzamanalim"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/author-or-user-image.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Author or User Image lets registered users upload an image that WordPress uses as their avatar in comments, author boxes, and other places that call the standard avatar functions.<\/p>\n\n<p>Features include:<\/p>\n\n<ul>\n<li>Self-service avatar upload and removal for registered users.<\/li>\n<li>An optional default avatar for registered users without a personal image.<\/li>\n<li>Administrator controls to remove images or block individual users from local avatar uploads.<\/li>\n<li>Media Library storage and WordPress-generated image sizes.<\/li>\n<li>Personal-data export and erasure integration.<\/li>\n<li>Upgrade migration for images and blocked-user settings created by older versions.<\/li>\n<\/ul>\n\n<p>The plugin does not send image or user data to an external service.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/author-or-user-image<\/code>, or install the plugin through the Plugins screen.<\/li>\n<li>Activate <strong>Author or User Image<\/strong>.<\/li>\n<li>Open <strong>Users &gt; Author or User Image<\/strong> to upload your avatar.<\/li>\n<li>Administrators can set the site default on that page and manage user images under <strong>Users &gt; Avatar Management<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20are%20new%20avatar%20images%20stored%3F\"><h3>Where are new avatar images stored?<\/h3><\/dt>\n<dd><p>Version 3.0.0 stores new uploads as WordPress Media Library attachments. Attachments created by the plugin are marked internally so replacement, privacy erasure, and optional uninstall cleanup only delete plugin-managed files.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20images%20from%20an%20older%20version%3F\"><h3>What happens to images from an older version?<\/h3><\/dt>\n<dd><p>An administrator visit starts a one-time migration. The plugin imports valid legacy JPG files into the Media Library and keeps the old files as a safe fallback. Existing image-size and blocked-user options are also understood and migrated.<\/p>\n\n<p>Temporary import failures are retried on a later administrator visit. On multisite, avatars and blocked-upload settings belong to each individual site.<\/p>\n\n<p>Imported images are stored separately from explicit uploads and removals, so a legacy import in progress cannot replace a newer user choice.<\/p>\n\n<p>Legacy images are read from the fixed <code>wp-content\/uploads\/author-image<\/code> location used by the old plugin, including on sites with a custom upload directory. On multisite, removing an avatar hides its legacy fallback on that site and retains the shared original for other sites. Privacy erasure reports any shared original it retains.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20delete%20avatar%20data%3F\"><h3>Does uninstalling delete avatar data?<\/h3><\/dt>\n<dd><p>Not by default. Administrators may opt in under <strong>Users &gt; Avatar Management &gt; Settings<\/strong>. Deactivation never deletes data.<\/p>\n\n<p>Opted-in cleanup removes plugin settings and managed Media Library attachments for that site. Legacy JPG fallback files retained during upgrades remain in <code>uploads\/author-image<\/code>; remove those separately if they are no longer needed.<\/p><\/dd>\n<dt id=\"can%20subscribers%20upload%20an%20avatar%3F\"><h3>Can subscribers upload an avatar?<\/h3><\/dt>\n<dd><p>Yes. Any logged-in user who can access their WordPress profile can upload an image for their own account unless an administrator has blocked local avatar uploads for that user. Only administrators can change the default image or manage other users.<\/p><\/dd>\n<dt id=\"which%20file%20types%20are%20accepted%3F\"><h3>Which file types are accepted?<\/h3><\/dt>\n<dd><p>The plugin accepts JPEG, PNG, and WebP images. WordPress verifies the actual file type and processes the upload with its image APIs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Rebuilt avatar handling around current WordPress avatar, upload, image, and Media Library APIs.<\/li>\n<li>Replaced login-based primary storage with user-ID attachment metadata.<\/li>\n<li>Added idempotent migration and legacy-data fallbacks.<\/li>\n<li>Added nonce and capability checks to every state-changing request.<\/li>\n<li>Added strict upload validation, sanitization, and escaped output.<\/li>\n<li>Replaced AJAX administration with accessible server-rendered forms and paginated tables.<\/li>\n<li>Added personal-data exporter and eraser support.<\/li>\n<li>Added optional, explicit uninstall cleanup.<\/li>\n<li>Removed unused undocumented binary assets and the former branding from the display name.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Previous public release.<\/li>\n<\/ul>","raw_excerpt":"Allow registered users to upload a local avatar image and set an optional default image for the site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/25807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=25807"}],"author":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alimuzzamanalim"}],"wp:attachment":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=25807"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=25807"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=25807"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=25807"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=25807"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=25807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}