{"id":282501,"date":"2026-02-26T15:46:42","date_gmt":"2026-02-26T15:46:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/didit-verify\/"},"modified":"2026-03-12T10:45:54","modified_gmt":"2026-03-12T10:45:54","slug":"didit-verify","status":"publish","type":"plugin","link":"https:\/\/bn-in.wordpress.org\/plugins\/didit-verify\/","author":23453314,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.1.4","stable_tag":"0.1.4","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Didit Verify","header_author":"Didit","header_description":"Identity verification for WordPress & WooCommerce using the Didit SDK.","assets_banners_color":"ffffff","last_updated":"2026-03-12 10:45:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/didit-protocol\/plugin-wordpress","header_author_uri":"https:\/\/didit.me","rating":0,"author_block_rating":0,"active_installs":10,"downloads":262,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.2":{"tag":"0.1.2","author":"alexdidit","date":"2026-02-26 15:44:55"},"0.1.3":{"tag":"0.1.3","author":"alexdidit","date":"2026-03-06 18:49:00"},"0.1.4":{"tag":"0.1.4","author":"alexdidit","date":"2026-03-12 10:45:54"}},"upgrade_notice":{"0.1.4":"<p>Match verification status handling between woocommerce and wordpress<\/p>","0.1.3":"<p>SDK updated to 0.1.8. Improved support for Woocommerce block based checkout on new versions.<\/p>","0.1.2":"<p>SDK updated to 0.1.6, source code documented, admin scripts properly enqueued.<\/p>","0.1.1":"<p>SDK bundled locally, third-party disclosure, all 49 languages, Plugin Check compliance.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3481063,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3481063,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3481063,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3481063,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.2","0.1.3","0.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page \u2014 configure mode, credentials, display options, and button appearance.","2":"Button Appearance section with live preview.","3":"Verification button on a page.","4":"WooCommerce checkout with verification step."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[5616,235446,26873,150636,286],"plugin_category":[45],"plugin_contributors":[256674],"plugin_business_model":[],"class_list":["post-282501","plugin","type-plugin","status-publish","hentry","plugin_tags-age-verification","plugin_tags-id-check","plugin_tags-identity-verification","plugin_tags-kyc","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-alexdidit","plugin_committers-alexdidit"],"banners":{"banner":"https:\/\/ps.w.org\/didit-verify\/assets\/banner-772x250.png?rev=3481063","banner_2x":"https:\/\/ps.w.org\/didit-verify\/assets\/banner-1544x500.png?rev=3481063","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/didit-verify\/assets\/icon-128x128.png?rev=3481063","icon_2x":"https:\/\/ps.w.org\/didit-verify\/assets\/icon-256x256.png?rev=3481063","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Didit Verify lets you require identity verification on your WordPress site. Drop a shortcode on any page or require it at WooCommerce checkout.<\/p>\n\n<p><strong>Two integration modes:<\/strong><\/p>\n\n<ul>\n<li><strong>UniLink<\/strong> \u2014 paste a URL from the workflow you want from Didit Console. No backend needed.<\/li>\n<li><strong>API Session<\/strong> \u2014 [RECOMMENDED] the plugin creates a unique session per user. Your API key stays server-side.<\/li>\n<\/ul>\n\n<p><strong>Display options:<\/strong><\/p>\n\n<ul>\n<li><strong>Modal<\/strong> \u2014 opens a centered overlay on top of the page<\/li>\n<li><strong>Embedded<\/strong> \u2014 renders the verification inline where the shortcode is placed<\/li>\n<li>Configurable close button, exit confirmation dialog, and auto-close on completion<\/li>\n<li>Debug logging for SDK events in the browser console<\/li>\n<\/ul>\n\n<p><strong>Button appearance:<\/strong><\/p>\n\n<ul>\n<li>Fully configurable from the admin panel: text, colors, border radius, padding, font size<\/li>\n<li>Live preview in Settings that updates as you change values<\/li>\n<li>Shortcode attributes can override the button text per page<\/li>\n<\/ul>\n\n<p><strong>Content gating:<\/strong><\/p>\n\n<ul>\n<li><code>[didit_gate]<\/code> shortcode \u2014 restrict any content to verified users only<\/li>\n<li><code>[didit_status]<\/code> shortcode \u2014 show the user's verification status anywhere<\/li>\n<li>Verification status saved to WordPress user meta and visible in the admin Users list<\/li>\n<\/ul>\n\n<p><strong>WooCommerce support:<\/strong><\/p>\n\n<ul>\n<li>Require verification at checkout with 4 position options<\/li>\n<li>Automatically send billing data (name, email, phone, address) to Didit for pre-filling and cross-validation<\/li>\n<li>Verification session ID saved to order meta for audit<\/li>\n<\/ul>\n\n<p><strong>Developer extensibility:<\/strong><\/p>\n\n<ul>\n<li>PHP action hooks: <code>didit_session_created<\/code>, <code>didit_verification_completed<\/code>, <code>didit_verification_cancelled<\/code><\/li>\n<li>PHP filter: <code>didit_sdk_url<\/code> to change the SDK CDN<\/li>\n<li>DOM CustomEvent: <code>didit:complete<\/code> for frontend JavaScript<\/li>\n<\/ul>\n\n<p><strong>Security (API mode):<\/strong><\/p>\n\n<ul>\n<li>API key stored server-side only \u2014 never sent to the browser<\/li>\n<li>CSRF nonce on every request<\/li>\n<li>Per-user rate limit: 10 sessions\/hour<\/li>\n<li>Per-IP rate limit: 3 sessions\/hour (guests)<\/li>\n<li>All input whitelisted and sanitized<\/li>\n<\/ul>\n\n<h3>Third-Party Service<\/h3>\n\n<p>This plugin connects to the <a href=\"https:\/\/didit.me\">Didit<\/a> identity verification service to process user verifications. When a verification session is created (API mode), the plugin sends data to Didit's servers. When the verification UI is displayed, an iframe loads content from <code>verify.didit.me<\/code>.<\/p>\n\n<p>This plugin bundles the <a href=\"https:\/\/www.npmjs.com\/package\/@didit-protocol\/sdk-web\">Didit Web SDK<\/a> (version 0.1.6) as <code>assets\/js\/didit-sdk.umd.min.js<\/code>. The full unminified source code is publicly available at the GitHub repository and npm package linked below.<\/p>\n\n<ul>\n<li>Service: <a href=\"https:\/\/didit.me\">https:\/\/didit.me<\/a><\/li>\n<li>SDK source code: <a href=\"https:\/\/github.com\/didit-protocol\/sdk-web\">https:\/\/github.com\/didit-protocol\/sdk-web<\/a><\/li>\n<li>SDK npm package: <a href=\"https:\/\/www.npmjs.com\/package\/@didit-protocol\/sdk-web\">https:\/\/www.npmjs.com\/package\/@didit-protocol\/sdk-web<\/a><\/li>\n<li>SDK license: MIT<\/li>\n<li>Terms of Use: <a href=\"https:\/\/didit.me\/en\/terms\/identity-verification\/\">https:\/\/didit.me\/en\/terms\/identity-verification\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/didit.me\/en\/terms\/privacy-policy\/\">https:\/\/didit.me\/en\/terms\/privacy-policy\/<\/a><\/li>\n<\/ul>\n\n<p>The SDK can be rebuilt from source with <code>npm install &amp;&amp; npm run build<\/code> (uses Rollup). See the GitHub repository for full build instructions.<\/p>\n\n<p>No data is sent to Didit until the site administrator configures the plugin and a user initiates verification.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>didit-verify<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Didit Verify<\/strong><\/li>\n<li>Go to <strong>Settings \u2192 Didit Verify<\/strong> and configure your mode:<\/li>\n<\/ol>\n\n<p><strong>UniLink (simplest):<\/strong>\nEnter the UniLink URL from your <a href=\"https:\/\/business.didit.me\">Didit Console<\/a> workflow.<\/p>\n\n<p><strong>API Session (recommended):<\/strong>\nEnter your Workflow ID and API Key from the <a href=\"https:\/\/business.didit.me\">Didit Console<\/a>.<\/p>\n\n<ol>\n<li>Add <code>[didit_verify]<\/code> to any page or post.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20a%20workflow%20id%20and%20api%20key%3F\"><h3>Where do I get a Workflow ID and API Key?<\/h3><\/dt>\n<dd><p>Sign up at <a href=\"https:\/\/business.didit.me\">business.didit.me<\/a>, create a verification workflow and copy the Workflow ID. Then go to API &amp; Webhooks and copy your API Key.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20unilink%20and%20api%20mode%3F\"><h3>What is the difference between UniLink and API mode?<\/h3><\/dt>\n<dd><p>UniLink uses a single shared URL \u2014 quick to set up but every visitor uses the same session link. API mode creates a unique verification session per user with full tracking, and keeps your API key secure on the server.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>[didit_verify]<\/code> shortcode on any page. WooCommerce integration is optional.<\/p><\/dd>\n<dt id=\"is%20my%20api%20key%20safe%3F\"><h3>Is my API key safe?<\/h3><\/dt>\n<dd><p>Yes. In API mode, the key is stored in the WordPress database and used only in server-to-server calls. It is never included in any HTML or JavaScript sent to the browser.<\/p><\/dd>\n<dt id=\"what%20is%20vendor%20data%3F\"><h3>What is vendor data?<\/h3><\/dt>\n<dd><p>Vendor data identifies each user in your Didit dashboard. The plugin automatically sends a per-user value based on your chosen mode:<\/p>\n\n<ul>\n<li><strong>WordPress User ID<\/strong> (default) \u2014 sends <code>wp-42<\/code><\/li>\n<li><strong>User Email<\/strong> \u2014 sends the user's email address<\/li>\n<li><strong>Custom prefix + User ID<\/strong> \u2014 sends e.g. <code>mystore-42<\/code><\/li>\n<li><strong>None<\/strong> \u2014 omits the field<\/li>\n<\/ul>\n\n<p>This enables session tracking and aggregation across multiple verifications for the same user.<\/p><\/dd>\n<dt id=\"how%20do%20i%20restrict%20content%20to%20verified%20users%3F\"><h3>How do I restrict content to verified users?<\/h3><\/dt>\n<dd><p>Wrap any content with the <code>[didit_gate]<\/code> shortcode:<\/p>\n\n<pre><code>[didit_gate]This content is only for verified users.[\/didit_gate]\n<\/code><\/pre>\n\n<p>Unverified users see a message and a verification button. Once verified, the content is revealed. You can customize the message:<\/p>\n\n<pre><code>[didit_gate message=\"Please verify to continue.\"]Secret content here.[\/didit_gate]\n<\/code><\/pre><\/dd>\n<dt id=\"how%20do%20i%20show%20verification%20status%3F\"><h3>How do I show verification status?<\/h3><\/dt>\n<dd><p>Use the <code>[didit_status]<\/code> shortcode. It shows \"Identity Verified\" or \"Not Verified\" for the logged-in user. You can customize all labels:<\/p>\n\n<pre><code>[didit_status verified_text=\"Verified!\" unverified_text=\"Pending\" login_text=\"Sign in first\"]\n<\/code><\/pre><\/dd>\n<dt id=\"how%20do%20i%20check%20if%20a%20user%20is%20verified%20in%20php%3F\"><h3>How do I check if a user is verified in PHP?<\/h3><\/dt>\n<dd><p>get_user_meta($user_id, '_didit_verified', true) returns <code>1<\/code> if verified. You can also check <code>_didit_status<\/code> for the result (Approved, Pending, Declined).<\/p><\/dd>\n<dt id=\"can%20i%20hook%20into%20verification%20events%3F\"><h3>Can I hook into verification events?<\/h3><\/dt>\n<dd><p>Yes. The plugin fires WordPress actions:<\/p>\n\n<ul>\n<li><code>didit_verification_completed<\/code> \u2014 when a user completes verification (passes user ID, session ID, status)<\/li>\n<li><code>didit_verification_cancelled<\/code> \u2014 when a user cancels<\/li>\n<li><code>didit_session_created<\/code> \u2014 when a session is created server-side<\/li>\n<\/ul>\n\n<p>Use <code>add_action()<\/code> in your theme's <code>functions.php<\/code> to hook in.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20button%3F\"><h3>Can I customize the button?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings \u2192 Didit Verify \u2192 Button Appearance<\/strong>. You can change:<\/p>\n\n<ul>\n<li>Button text and success text<\/li>\n<li>Background color and text color<\/li>\n<li>Border radius (0 = square, 50 = pill)<\/li>\n<li>Padding (vertical and horizontal)<\/li>\n<li>Font size<\/li>\n<\/ul>\n\n<p>A live preview updates in real time as you change values. You can also override the text per page:<\/p>\n\n<pre><code>[didit_verify text=\"Verify Now\" success_text=\"Done!\"]\n<\/code><\/pre>\n\n<p>The button has CSS class <code>didit-verify-btn<\/code> (and <code>didit-verified<\/code> after success) for further styling.<\/p><\/dd>\n<dt id=\"can%20i%20switch%20between%20modal%20and%20embedded%20display%3F\"><h3>Can I switch between modal and embedded display?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Didit Verify \u2192 Display Options \u2192 Display Mode<\/strong>. Choose Modal (popup overlay) or Embedded (inline where the shortcode is). You can also override per shortcode:<\/p>\n\n<pre><code>[didit_verify mode=\"embedded\"]\n<\/code><\/pre><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Match verification status handling like in woocommerce: only grant access for Approved status.<\/li>\n<li>Differentiate Approved, Declined, and In Review states in button, content gate, status shortcode, and admin users list.<\/li>\n<li>Use Didit design system colors for status indicators.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Update Didit Web SDK to version 0.1.8.<\/li>\n<li>Improved support for Woocommerce block based checkout on new versions.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Update Didit Web SDK to version 0.1.6.<\/li>\n<li>Document bundled SDK source code repository, license, and build instructions in readme.<\/li>\n<li>Move admin inline scripts to enqueued JavaScript file.<\/li>\n<li>Fix contributors username.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Bundle SDK JavaScript locally instead of loading from CDN.<\/li>\n<li>Add third-party service disclosure (Didit Terms of Use and Privacy Policy).<\/li>\n<li>Add all 49 supported languages to the language selector.<\/li>\n<li>Fix Plugin Check (PCP) errors: output escaping, translators comment, variable prefixes.<\/li>\n<li>Wrap debug logging behind WP_DEBUG flag.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>UniLink and API Session modes.<\/li>\n<li>Modal and embedded display modes.<\/li>\n<li>Configurable button appearance with live admin preview (colors, radius, padding, font size).<\/li>\n<li>Content gating with <code>[didit_gate]<\/code> shortcode.<\/li>\n<li>Verification status shortcode <code>[didit_status]<\/code>.<\/li>\n<li>Verification status saved to WordPress user meta.<\/li>\n<li>Verification column in admin Users list.<\/li>\n<li>WooCommerce checkout integration with 4 position options and billing data forwarding.<\/li>\n<li>Dynamic vendor data (User ID, email, custom prefix, or none).<\/li>\n<li>PHP action hooks and <code>didit_sdk_url<\/code> filter for developer extensibility.<\/li>\n<li>6-layer security model for API session creation.<\/li>\n<li>49 language options for the verification UI.<\/li>\n<\/ul>","raw_excerpt":"Add identity verification to any WordPress page or WooCommerce checkout using Didit.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282501"}],"author":[{"embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alexdidit"}],"wp:attachment":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282501"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282501"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282501"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282501"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282501"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}