Title: TruAnon Identity
Author: jtayler
Published: <strong>Avril 16, 2021</strong>
Last modified: Dawout 11, 2026

---

Search plugins

![](https://ps.w.org/truanon-identity/assets/banner-772x250.png?rev=3609408)

![](https://ps.w.org/truanon-identity/assets/icon-256x256.png?rev=3609408)

# TruAnon Identity

 By [jtayler](https://profiles.wordpress.org/jtayler/)

[Download](https://downloads.wordpress.org/plugin/truanon-identity.3.2.8.zip)

 * [Details](https://hat.wordpress.org/plugins/truanon-identity/#description)
 * [Reviews](https://hat.wordpress.org/plugins/truanon-identity/#reviews)
 *  [Installation](https://hat.wordpress.org/plugins/truanon-identity/#installation)
 * [Development](https://hat.wordpress.org/plugins/truanon-identity/#developers)

 [Support](https://wordpress.org/support/plugin/truanon-identity/)

## Description

You have profiles. This lets members bring their own confidence of identity to them,
and choose how others see and share it.

It amplifies a profile. When identity carries weight, members do more of whatever
they came to do — and do it more safely.

It is voluntary. Members use it because the platform makes it worth using. What 
shows is theirs to set, and theirs to withdraw at any time, everywhere at once.

Confidence of identity is built from a public history that cannot be assembled on
demand. Where it is visible, a fraudster gains nothing and carries more risk, and
moves on to a less trusted platform. The community sorts itself, without rules or
moderation.

It is automatic and continuous. Members keep it current by being who they are.

The site stores nothing that identifies anyone — a rank, a score, an image address.
Everything else is read live when viewed and never written down.

#### Where badges appear

 * Beside member names on comments and post bylines — classic and block themes
 * On the member’s profile (the author page): badge, title, and granted details
 * On UsersWP member profiles and in the members directory — no code
 * Anywhere else via the `[truanon]` shortcode, the `[truanon_card]` profile card,
   or the Badge block
 * `[truanon_settings]` places the member panel on any front-end page for membership
   sites

#### What it costs your server

Badges render from cached rank and score; no page waits on an API. Styling is self-
contained — no Bootstrap, no icon fonts — and every color is a CSS custom property(`--
truanon-*`) a theme can override.

### Using it with a membership plugin

Community plugins render their own profile pages and member directories. WordPress
core never fires its author or comment hooks there, so TruAnon reaches them either
natively (UsersWP) or with a one-line snippet (everything else).

**UsersWP — nothing to add.** The badge places itself on member profiles _and_ in
the members directory (there as a compact rank-colored check, rendered from cache
with no per-member API call). On their own profile the owner also sees a **Verify/
Manage** bar that opens their identity panel (anchor + privacy switches). It is 
on as soon as you enter your key; the setting on the TruAnon admin screen turns 
the member control off if you’d rather place it yourself. If you ran an earlier 
version with a `[truanon_verification]` profile snippet, remove it after updating
so the badge isn’t drawn twice.

**Other plugins (BuddyPress, Ultimate Member, bbPress) — one snippet.** Pick the
piece you want with a shortcode — `[truanon]` (pill), `[truanon size="inline"]` (
just the check, no API call), or `[truanon_card]` (full card); each accepts `user
="login-or-id"` — and place it from your plugin’s profile hook. For BuddyPress, 
in your theme’s functions.php or a code-snippets plugin:

    ```
    add_action( 'bp_before_member_header_meta', function () {
        echo do_shortcode( '[truanon_card user="' . bp_displayed_user_id() . '"]' );
    } );
    ```

Then give those members a place to manage their identity, since they never open 
wp-admin: put **`[truanon_settings]`** on a front-end page (or profile tab). It 
shows the visitor their own badge and a **Verify / Manage** button with every privacy
switch. (On UsersWP this is the inline switch above, so the shortcode is optional
there.)

**Upgrading from 1.x / 2.x?** The old `[truanon_verification userid=".." username
=".."]` shortcode still works. It now renders the current design — an inline check
in a members list, the full card on a profile — so existing placement snippets keep
working with no edits. Pass `size="inline"`, `size="large"`, or `size="card"` to
force one specific piece.

### For developers and AI assistants

Placement is automatic on stock WordPress (comment authors, post bylines, author
archives) and on UsersWP (member profiles and the members directory). On any platform
without native support — BuddyPress, Ultimate Member, bbPress, a custom theme — 
place it explicitly with the surface below.

How fetching works (the model): a badge paints from a small per-user cache — rank,
score, color — so no page ever waits on the API. TruAnon is called live only when
the **full badge/card** is shown **and** the member’s identity switch is on; never
for a list/inline check, and never for a member who has not turned it on. Each successful
call refreshes the cache; the list checkmark reads that cache and never calls out.
The call is **not** gated on a stored “anchored” flag — whether a member is anchored
is what the call returns, and it is recorded as a result, never required as a precondition.

Shortcodes:

 * `[truanon user="login-or-id" size="large|inline"]` — the badge. `inline` is a
   small check with no API call, for lists.
 * `[truanon_card user="login-or-id"]` — the profile card: badge and the details
   the member has granted, read live.
 * `[truanon_settings]` — the member’s own Verify / Manage control with privacy 
   switches, for front-end membership sites.
 * `[truanon_verification userid=".." username=".."]` — legacy 1.x / 2.x alias; 
   context-aware.

Template tag (PHP): `truanon_badge( $user = 0, $size = 'large' )` — `$user` is a
user ID, login, or WP_User; `$size` is `large` or `inline`.

Block: “TruAnon Badge” (`truanon/badge`), attributes `user` and `size`.

Filters: `truanon_userswp_render_badge` ( bool, int $user_id ), `truanon_inline_manage`(
bool ), `truanon_inline_link` ( string $url, int $user_id ), `truanon_absent_text`(
string, int $user_id ).

To integrate a profile plugin without native support: hook that plugin’s action 
after the profile name or header and echo `truanon_badge( $id )` or `do_shortcode('[
truanon_card user="' . $id . '"]' )` on the single profile. In a member directory
or loop, use the `inline` size so each row renders from cache with no per-member
API call. Members who never open wp-admin get their own controls from a `[truanon_settings]`
mount on a front-end page.

## Screenshots

[⌊A member's profile, amplified: badge with rank and score, title, and the details
they've granted — fetched live, never stored.⌉⌊A member's profile, amplified: badge
with rank and score, title, and the details they've granted — fetched live, never
stored.⌉[

A member’s profile, amplified: badge with rank and score, title, and the details
they’ve granted — fetched live, never stored.

[⌊Privacy settings members control themselves: visibility switches and a private
mode that removes every link.⌉⌊Privacy settings members control themselves: visibility
switches and a private mode that removes every link.⌉[

Privacy settings members control themselves: visibility switches and a private mode
that removes every link.

[⌊The WordPress profile screen: anchored members manage their identity; new members
see a single Verify button.⌉⌊The WordPress profile screen: anchored members manage
their identity; new members see a single Verify button.⌉[

The WordPress profile screen: anchored members manage their identity; new members
see a single Verify button.

[⌊Admin setup in its entirety: a service name and a private key.⌉⌊Admin setup in
its entirety: a service name and a private key.⌉[

Admin setup in its entirety: a service name and a private key.

## Blocks

This plugin provides 1 block.

 *   TruAnon Badge

## Installation

 1. Install and activate the plugin.
 2. Register your service at [developer.truanon.com](https://developer.truanon.com)—
    you’ll receive a service name and a private key.
 3. Open **TruAnon** in the WordPress admin sidebar and enter both. Save.

On a **standard WordPress site** that is the whole setup: badges appear automatically
beside names on comments and post bylines and on each member’s author page, and 
every member finds a **Verify identity** button on their WordPress profile screen.
One anchor later, their badge follows them across the site.

Running **BuddyPress, Ultimate Member, UsersWP, bbPress** or another community plugin?
Those draw their own profiles and member lists through their own templates, which
WordPress core hooks never touch — so the automatic placement above does not reach
them. You add the badge and the member panel by hand; see **“Using it with a membership
plugin”** below. This is the common case, not the exception, so don’t skip it.

To turn everything off, remove the private key.

## FAQ

### Does it work with UsersWP, BuddyPress, or other membership plugins?

UsersWP works out of the box — the badge appears on member profiles and in the members
directory, and the member’s Verify / Manage control appears on their own profile,
no snippet. BuddyPress and others take a one-line snippet to place the badge, plus
the `[truanon_settings]` panel for member controls. See “Using it with a membership
plugin” above. On a standard WordPress site nothing is needed; badges appear on 
their own.

### What do members have to do?

Anchor once. They tap Verify on their profile, complete the connection in a TruAnon
window, and they’re done — the badge maintains itself from then on. Every visibility
choice afterward is a switch they flip themselves.

### Can members undo it?

Display is always theirs to revoke — one switch returns them to Unknown everywhere,
immediately. The anchor itself is permanent; that permanence is what makes the badge
worth reading.

### Can I restyle the badge?

Yes. The badge and card are bare, classed markup with CSS-variable colors and even
CSS-generated separators — override `--truanon-*` variables or restyle any `.truanon-*`
class from your theme. No templates to edit.

## Reviews

![](https://secure.gravatar.com/avatar/ab84f3a9127b20e7c5ecf43146813a186ebe74aff84e1a4ab10c35f240d2131d?
s=60&d=retro&r=g)

### 󠀁[Easy Installation](https://wordpress.org/support/topic/easy-installation-12/)󠁿

 [bobbymale](https://profiles.wordpress.org/bobbymale/) Oktòb 28, 2021

Using and installing the TruAnon system is easy, as long as you follow the directions
that the company provides for installation and use. The benefits of the TruAnon 
platform can be many, including allowing for decals to be placed on your member's
websites and other profiles which really makes the TruAnon platform a validation
resource for your organization and a great investment for you to consider implementing
today.

![](https://secure.gravatar.com/avatar/71f910f180b0dc35d7595ac9f6bbbf2bdd1d2dc39b6a6f59f587d4d73dff04da?
s=60&d=retro&r=g)

### 󠀁[Great support](https://wordpress.org/support/topic/great-support-3590/)󠁿

 [amarcellan0328](https://profiles.wordpress.org/amarcellan0328/) Me 21, 2021

This works perfectly. The developer is very responsive.

 [ Read all 2 reviews ](https://wordpress.org/support/plugin/truanon-identity/reviews/)

## Contributors & Developers

“TruAnon Identity” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ jtayler ](https://profiles.wordpress.org/jtayler/)

[Translate “TruAnon Identity” into your language.](https://translate.wordpress.org/projects/wp-plugins/truanon-identity)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/truanon-identity/),
check out the [SVN repository](https://plugins.svn.wordpress.org/truanon-identity/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/truanon-identity/)
by [RSS](https://plugins.trac.wordpress.org/log/truanon-identity/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 3.2.8

 * Fixed verified members showing no badge on sites where WordPress logins are email
   addresses. TruAnon identifies a member by their username, and 2.x sent exactly
   that; the 3.0.0 rewrite began sending the WordPress login instead. Where the 
   two differ — a login that is an email address — every lookup came back “member
   unknown”, and the member read as unverified no matter how long they had been 
   anchored. The username is sent again, with the login still tried as a fallback
   so anchors created under 3.x keep working.
 * Members wrongly recorded as unverified now recover by themselves. Those failed
   lookups were saved as “definitively not anchored”, and that answer suppressed
   all future lookups — so the badge could never come back on its own. Every such
   record is cleared once on update and re-checked under the correct username. Real
   anchors are never touched.

#### 3.2.7

 * Fixed members losing their badge for good. Saving the settings screen with a 
   changed service name or private key cleared the anchored flag for every member
   on the site, and because that flag also suppresses the lookup, nothing could 
   discover they were still anchored. An anchor is permanent and is no longer cleared
   by anything.
 * Members who anchored under 2.x now recover automatically. Those releases kept
   no per-user state, so after upgrading they had no anchored flag and read as unanchored
   forever. A member with no flag yet is now looked up once, on their profile card,
   and the answer is remembered. Lists, comments and bylines still render from cache
   and make no calls.

#### 3.2.6

 * Every badge — pill, list check, and inline check alike — is now clickable: a 
   short popup explains what the rank means, with a link to the member’s profile
   where one already existed. One script handles the whole page, so it costs nothing
   extra on a page with many checks.

#### 3.2.5

 * Fixed a stuck “Verify identity” state: whether a member is anchored is now decided
   by the presence of their TruAnon anchor, not by rank alone. Rank can still read
   Unknown right after anchoring; gating on it left some already-anchored members
   unable to reach their privacy switches.
 * UsersWP member directories: the legacy `[truanon]` snippet no longer draws a 
   duplicate check next to the native placement.
 * Card CSS: fixed the header font style/weight leaking from surrounding page styles,
   and a stray display rule on the anchor separator.

#### 3.2.4

 * Fixed the core regression that left members reading “Unknown”: the live profile
   fetch was gated on a local “anchored” flag that only a prior fetch could set —
   a deadlock, so the plugin never called TruAnon at all. The fetch is now gated
   only by the member’s identity switch; the call itself establishes the rank and
   caches it. Whether a member is anchored is a result of the call, never a precondition
   for it.
 * The members-directory checkmark no longer shows on members who never anchored—
   an unverified member shows nothing in a list (matching the inline check), so 
   the mark means something again.
 * A profile no longer renders two identical cards when an older [truanon_verification]
   snippet is still in the template alongside the native placement.
 * Documented the fetch model (switch-gated, cache-on-fetch, checkmark from cache)
   in the developer notes.

#### 3.2.3

 * Removed an erroneous background refresh that ignored the member’s verify switch,
   re-checked users on a timer, and cached API failures (401/5xx) as “unknown” —
   which could turn a bad or missing key into badges frozen site-wide with no error.
   Fetching is now strictly gated by the member’s switch and happens only when the
   full badge is shown, as the model intends. Changing the service name or key now
   clears cached ranks so nothing stale survives.

#### 3.2.2

 * Added a dashboard warning for administrators when no Service Name and Private
   Key are set, so a site with badges turned off is visible instead of silent. Clears
   itself once credentials are present.

#### 3.2.1

 * Fixed: sites updating straight from 1.x/2.x to 3.x could land with empty service
   credentials, silently turning every badge off. The 2.x service name and private
   key now carry over automatically on update, not only on a fresh activation.

#### 3.2.0

 * UsersWP members directory: the badge now appears there too, as a compact rank-
   colored check rendered from cache — no per-member API call, no link. Unknown 
   members read dimmed.
 * The owner’s control on their own profile is now a status bar: a plain-language
   line, the member’s public profile link once anchored, and a Verify / Manage button.
 * Privacy changes apply live — hiding personal, contact, or social detail updates
   the profile card at once, no page reload.
 * Privacy editor: “Use verified identity” disables the dependent switches while
   it is off; the three display switches are grouped together; the redundant badge
   and profile link were removed from the editor.
 * The profile card drops its outer box and the duplicated photo, so it sits on 
   the host profile directly.
 * Added a “For developers and AI assistants” section documenting the shortcode,
   template-tag, block, and filter surface.
 * Rewrote the description.

#### 3.1.0

 * UsersWP: native support. The badge now places itself on member profiles, and 
   the profile owner gets a compact inline **Verify / Manage** switch beside it —
   no theme snippet required. If you previously added a `[truanon_verification]`
   profile snippet, remove it after updating to avoid a duplicate badge.
 * New setting (on by default): show members the inline Verify / Manage control 
   on their own profile. Also filterable via `truanon_inline_manage`; the module’s
   badge placement is filterable via `truanon_userswp_render_badge`.

#### 3.0.3

 * The `[truanon_verification]` alias now recognizes UsersWP members directories
   as well as BuddyPress, so member lists render the light inline check with no 
   per-member API call; single profiles still get the full card.
 * Documented placement for UsersWP and BuddyPress, including snippet examples and
   the `[truanon_settings]` member panel, in the readme.
 * Refreshed banner artwork and corrected icon filenames to the required ASCII naming.

#### 3.0.2

 * Restore the legacy `[truanon_verification userid=".." username=".."]` shortcode
   as an alias so existing 1.x/2.x placement snippets keep rendering after upgrade
   instead of printing the raw tag.
 * The alias is context-aware: an inline check in a members directory (cache only,
   no API call) and the full profile card on a single profile. An optional `size
   ="inline|large|card"` forces a specific piece.

#### 3.0.1

 * Unknown badges render inside the same card structure as known badges — fixes 
   left-edge misalignment in block themes.
 * Rewritten plugin description and new screenshots.

#### 3.0.0

 * Complete rewrite against the current TruAnon API.
 * Badges render instantly from derived cache (rank, score, photo) — zero blocking
   calls in page loads.
 * Member details fetched live per view and never stored; grants and revocations
   apply in real time.
 * New owner panel: pre-anchor pitch, in-page verification overlay, member privacy
   switches.
 * Private mode strips links, usernames, emails, and phone digits server-side.
 * New pill badge, Gutenberg block, shortcodes, comment and byline placement in 
   classic and block themes.
 * Settings reduced to service name and private key; remove the key to turn everything
   off.
 * Settings migrate automatically from 2.x.

## Meta

 *  Version **3.2.8**
 *  Last updated **2 months ago**
 *  Active installations **10+**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.6**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/truanon-identity/)
 * Tags
 * [badge](https://hat.wordpress.org/plugins/tags/badge/)[identity](https://hat.wordpress.org/plugins/tags/identity/)
   [reputation](https://hat.wordpress.org/plugins/tags/reputation/)[trust](https://hat.wordpress.org/plugins/tags/trust/)
   [verification](https://hat.wordpress.org/plugins/tags/verification/)
 *  [Advanced View](https://hat.wordpress.org/plugins/truanon-identity/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  2 5-star reviews     ](https://wordpress.org/support/plugin/truanon-identity/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/truanon-identity/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/truanon-identity/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/truanon-identity/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/truanon-identity/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/truanon-identity/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/truanon-identity/reviews/)

## Contributors

 *   [ jtayler ](https://profiles.wordpress.org/jtayler/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/truanon-identity/)