{"id":355708,"date":"2026-08-20T19:52:18","date_gmt":"2026-08-20T19:52:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/recovery-milestone-counter\/"},"modified":"2026-08-20T19:52:07","modified_gmt":"2026-08-20T19:52:07","slug":"recovery-milestone-counter","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/recovery-milestone-counter\/","author":23551324,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.3","stable_tag":"0.2.3","tested":"7.0.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Recovery Milestone Counter","header_author":"Elevate Design Space","header_description":"A private, member-controlled recovery date counter with optional BuddyPress profile visibility.","assets_banners_color":"","last_updated":"2026-08-20 19:52:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/elevatedesignspace.com\/recovery-milestone-counter\/","header_author_uri":"https:\/\/elevatedesignspace.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":25,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.3":{"tag":"0.2.3","author":"elevatedesignspace","date":"2026-08-20 19:52:07"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3657709,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[204,869,157760,13383,276711],"plugin_category":[36,44],"plugin_contributors":[276712],"plugin_business_model":[],"class_list":["post-355708","plugin","type-plugin","status-publish","hentry","plugin_tags-buddypress","plugin_tags-counter","plugin_tags-milestones","plugin_tags-recovery","plugin_tags-sobriety","plugin_category-analytics","plugin_category-discussion-and-community","plugin_contributors-elevatedesignspace","plugin_committers-elevatedesignspace"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/recovery-milestone-counter\/assets\/icon-256x256.png?rev=3657709","icon_2x":"https:\/\/ps.w.org\/recovery-milestone-counter\/assets\/icon-256x256.png?rev=3657709","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Recovery Milestone Counter lets registered WordPress members save a recovery start date and view a supportive days-in-recovery counter.<\/p>\n\n<p>Privacy is built into the core experience:<\/p>\n\n<ul>\n<li>A member's recovery start date is private to their account.<\/li>\n<li>The profile counter is disabled by default.<\/li>\n<li>Members can show or hide the profile counter without deleting the saved date.<\/li>\n<li>Profile visibility can be limited to the member, BuddyPress friends, or all logged-in members.<\/li>\n<li>Site owners can choose from three polished counter designs in the WordPress settings interface.<\/li>\n<li>Logged-out visitors cannot see profile counters.<\/li>\n<li>Members can permanently delete their recovery date and related profile settings at any time.<\/li>\n<li>Recovery data is supported by WordPress personal-data export and erasure tools.<\/li>\n<li>Site owners can enable milestone notifications, after which members can individually opt in to private email alerts.<\/li>\n<li>Milestone days are recognized privately inside the main counter.<\/li>\n<\/ul>\n\n<p>The plugin stores data in standard WordPress user metadata. It creates no custom database tables, uses no external APIs, and adds no tracking. Optional milestone emails use WordPress Cron and the site's configured WordPress mail system.<\/p>\n\n<p>Recovery Milestone Counter provides informational tracking tools only. It does not provide medical advice, diagnosis, treatment, emergency services, or crisis support.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores the following values in WordPress user metadata:<\/p>\n\n<ul>\n<li><code>_rmc_recovery_start_date<\/code><\/li>\n<li><code>_rmc_profile_visibility<\/code><\/li>\n<li><code>_rmc_show_profile_counter<\/code><\/li>\n<li><code>_rmc_email_notifications<\/code><\/li>\n<li><code>_rmc_sent_milestones<\/code><\/li>\n<\/ul>\n\n<p>Members can remove these values using the Delete recovery data button. Site administrators should disclose this data storage in their privacy policy where required.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload and activate Recovery Milestone Counter.<\/li>\n<li>Open Settings &gt; Recovery Counter for the quick-start guide.<\/li>\n<li>Add <code>[recovery_milestone_counter]<\/code> to a page for the private counter and date editor.<\/li>\n<li>Add <code>[recovery_milestone_settings]<\/code> to a page for profile controls, member email consent, and personal-data deletion.<\/li>\n<\/ol>\n\n<p>Optional shortcodes:<\/p>\n\n<ul>\n<li><code>[recovery_milestone_mini]<\/code> displays a private compact counter for the signed-in member.<\/li>\n<li><code>[recovery_profile_milestone]<\/code> displays a visibility-aware compact counter in a BuddyPress profile area.<\/li>\n<\/ul>\n\n<p>Sites using compatible BuddyPress profile templates may enable automatic profile-header placement under Settings &gt; Recovery Counter.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20buddypress%20required%3F\"><h3>Is BuddyPress required?<\/h3><\/dt>\n<dd><p>No. The private counter, date editor, settings, and compact personal counter work with standard WordPress user accounts. BuddyPress is needed only for member-profile visibility and friend-based visibility.<\/p><\/dd>\n<dt id=\"is%20the%20recovery%20start%20date%20public%3F\"><h3>Is the recovery start date public?<\/h3><\/dt>\n<dd><p>No. The date itself is never displayed by the profile counter. Profile counters are disabled by default and never appear to logged-out visitors.<\/p><\/dd>\n<dt id=\"can%20a%20member%20hide%20the%20counter%20without%20deleting%20the%20date%3F\"><h3>Can a member hide the counter without deleting the date?<\/h3><\/dt>\n<dd><p>Yes. The profile toggle is reversible. Permanent deletion is a separate action.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20recovery%20information%20to%20another%20service%3F\"><h3>Does the plugin send recovery information to another service?<\/h3><\/dt>\n<dd><p>The plugin makes no external API requests and includes no analytics or tracking. The site administrator must first enable the feature, and each member must then explicitly opt in. WordPress sends those messages using the site's configured mail system. The plugin developer does not receive the recovery date or notification data.<\/p><\/dd>\n<dt id=\"which%20milestone%20notifications%20are%20available%3F\"><h3>Which milestone notifications are available?<\/h3><\/dt>\n<dd><p>The plugin includes 1 day, 7 days, 30 days, 60 days, 90 days, 100 days, 6 months, 9 months, 1 year, 500 days, 2 years, 1,000 days, 3 years, and 5 years. Members do not need to select them individually. The administrator feature switch and member email consent are both disabled by default.<\/p><\/dd>\n<dt id=\"will%20milestone%20email%20always%20arrive%20at%20exactly%209%3A00%20am%3F\"><h3>Will milestone email always arrive at exactly 9:00 AM?<\/h3><\/dt>\n<dd><p>The plugin schedules email for 9:00 AM in the WordPress site timezone. WordPress Cron runs when the site receives traffic, so delivery can occur later on low-traffic sites. Email delivery also depends on the site's mail configuration.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20the%20plugin%20is%20deleted%3F\"><h3>What happens when the plugin is deleted?<\/h3><\/dt>\n<dd><p>Deleting the plugin through WordPress removes the plugin settings and user metadata created by the plugin. Deactivation alone does not delete member data, but it does clear scheduled notification tasks.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Displays \"None\" instead of a blank value when no milestone notifications have been processed in a personal-data export.<\/li>\n<li>Identifies Elevate Design Space as the plugin developer and MeetOnAero as the originating community.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Moves the single member email opt-in directly below the profile-counter toggle.<\/li>\n<li>Explains that milestone messages use the member's existing WordPress account email.<\/li>\n<li>Optically centers the Save and Delete button labels against theme font metrics.<\/li>\n<li>Tightens the compact counter height, padding, and line spacing.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Adds an unchecked administrator feature switch for milestone notifications.<\/li>\n<li>Replaces the individual milestone grid with one unchecked member email-consent toggle.<\/li>\n<li>Includes all supported milestone days automatically after both levels of consent are enabled.<\/li>\n<li>Forces exact vertical centering and grid placement for the Save and Delete buttons.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Adds opt-in email notifications for selectable recovery milestones.<\/li>\n<li>Adds a private on-counter celebration on milestone days.<\/li>\n<li>Adds scheduling cleanup, privacy export, erasure, and uninstall support for notification data.<\/li>\n<li>Further protects privacy-badge and action-button alignment from theme overrides.<\/li>\n<\/ul>\n\n<h4>0.1.14<\/h4>\n\n<ul>\n<li>Protected profile-setting typography and side-by-side actions from theme overrides.<\/li>\n<\/ul>\n\n<h4>0.1.13<\/h4>\n\n<ul>\n<li>Centered the privacy badge status dot and label consistently across themes.<\/li>\n<\/ul>\n\n<h4>0.1.12<\/h4>\n\n<ul>\n<li>Adds the WordPress.org <code>Tested up to<\/code> readme header.<\/li>\n<li>Documents intentional third-party cache compatibility names for Plugin Check.<\/li>\n<\/ul>\n\n<h4>0.1.11<\/h4>\n\n<ul>\n<li>Resolves Plugin Check output-escaping findings for the trusted settings renderer.<\/li>\n<li>Uses filtered request values for request-method, status, and admin-settings inputs.<\/li>\n<li>Removes false-positive nonce and sanitization warnings from read-only status parameters.<\/li>\n<\/ul>\n\n<h4>0.1.10<\/h4>\n\n<ul>\n<li>Adds the translator comments required by WordPress Plugin Check for every localized placeholder string.<\/li>\n<\/ul>\n\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Adds a JavaScript-controlled fallback for themes that intercept native toggle-label behavior.<\/li>\n<li>Keeps the toggle's visual state synchronized with its actual checkbox value across all three designs.<\/li>\n<li>Moves the switch knob with explicit positioning instead of a transform to prevent theme conflicts.<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Fixes the profile-counter toggle knob not moving between its on and off positions.<\/li>\n<li>Uses an explicit, theme-resistant switch track and knob structure.<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Prevents private recovery pages from being cached by compatible WordPress caching systems.<\/li>\n<li>Verifies the signed-in member's current counter value after page load to prevent stale totals.<\/li>\n<li>Keeps the saved date, displayed total, date label, and encouragement synchronized.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Prevents cached pages from intermittently displaying a previously selected design.<\/li>\n<li>Synchronizes recovery components with the current saved design through a lightweight no-cache request.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Fixes design cards that could prevent switching away from the last selected design.<\/li>\n<li>Uses explicit radio-button labels and reports the active design after saving.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Fixes design and BuddyPress settings not persisting after Save Changes.<\/li>\n<li>Adds a dedicated, nonce-protected WordPress admin settings handler and save confirmation.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Restores the full visual depth and refinement of the original MeetOnAero experience.<\/li>\n<li>Adds layered ambient glows, glass-panel treatments, pill buttons, richer shadows, and stronger theme protection.<\/li>\n<li>Refines the profile settings toggle and compact profile counter.<\/li>\n<li>Adds three selectable design themes with visual radio-card previews in the WordPress settings interface.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Adds a polished MeetOnAero-inspired gradient design to the counter, settings card, and compact counter.<\/li>\n<li>Adds an administrator-facing explanation when BuddyPress is not active.<\/li>\n<li>Explains that the profile shortcode must be placed inside a BuddyPress member-profile area.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Adds the Recovery Milestone Counter icon and branded settings-page header.<\/li>\n<li>Credits MeetOnAero as the creator and Elevate Design Space as the designer.<\/li>\n<li>Adds the copyright notice for Chris Ramey.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial public-ready beta.<\/li>\n<li>Adds a private recovery-date counter and editor.<\/li>\n<li>Adds a reversible profile-counter toggle and visibility controls.<\/li>\n<li>Adds permanent member-controlled data deletion.<\/li>\n<li>Adds optional BuddyPress profile integration.<\/li>\n<li>Adds a WordPress settings page with shortcode instructions.<\/li>\n<li>Integrates with WordPress personal-data export, erasure, and privacy-policy tools.<\/li>\n<\/ul>","raw_excerpt":"A private, member-controlled recovery counter with optional BuddyPress profile visibility.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/355708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=355708"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/elevatedesignspace"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=355708"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=355708"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=355708"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=355708"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=355708"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=355708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}