{"id":394119,"date":"2026-10-28T06:54:31","date_gmt":"2026-10-28T06:54:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kommentti\/"},"modified":"2026-10-28T06:54:22","modified_gmt":"2026-10-28T06:54:22","slug":"kommentti","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/kommentti\/","author":23594559,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1.4","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Kommentti","header_author":"Cen Medya Limited \u015eirketi","header_description":"Add Kommentti comments with an iframe or server-rendered HTML, without editing your theme.","assets_banners_color":"fafbf7","last_updated":"2026-10-28 06:54:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/kommentti.com\/developers","header_author_uri":"https:\/\/cenmedya.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"kommentti","date":"2026-10-28 06:54:22","revision":3770040}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3770040,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3770040,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3770040,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3770040,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"kommentti\/comments":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"kommentti\/comments","version":"0.1.1","title":"Kommentti comments","category":"widgets","icon":"admin-comments","description":"Comments for the current article, powered by Kommentti.","textdomain":"kommentti","editorScript":"kommentti-editor","supports":{"html":false,"multiple":false},"usesContext":["postId","postType"]}},"tagged_versions":["0.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3770040,"resolution":"1","location":"assets","locale":"","width":800,"height":3121},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3770040,"resolution":"2","location":"assets","locale":"","width":1265,"height":712}},"screenshots":{"1":"Website connection, display modes and protected API settings in the Turkish interface. Five other interface languages are also included.","2":"The Kommentti Developer Portal explains WordPress installation, domain verification and comment placement."}},"plugin_section":[],"plugin_tags":[107,2316,5708,1756],"plugin_category":[44],"plugin_contributors":[289117],"plugin_business_model":[],"class_list":["post-394119","plugin","type-plugin","status-publish","hentry","plugin_tags-comments","plugin_tags-community","plugin_tags-discussion","plugin_tags-moderation","plugin_category-discussion-and-community","plugin_contributors-kommentti","plugin_committers-kommentti"],"banners":{"banner":"https:\/\/ps.w.org\/kommentti\/assets\/banner-772x250.png?rev=3770040","banner_2x":"https:\/\/ps.w.org\/kommentti\/assets\/banner-1544x500.png?rev=3770040","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kommentti\/assets\/icon-128x128.png?rev=3770040","icon_2x":"https:\/\/ps.w.org\/kommentti\/assets\/icon-256x256.png?rev=3770040","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kommentti\/assets\/screenshot-1.png?rev=3770040","caption":"Website connection, display modes and protected API settings in the Turkish interface. Five other interface languages are also included."},{"src":"https:\/\/ps.w.org\/kommentti\/assets\/screenshot-2.png?rev=3770040","caption":"The Kommentti Developer Portal explains WordPress installation, domain verification and comment placement."}],"raw_content":"<!--section=description-->\n<p>Kommentti connects your WordPress publication to the Kommentti comment and community service.<\/p>\n\n<ul>\n<li>Standard iframe installation on every Kommentti plan.<\/li>\n<li>On-site moderation from Comments \u2192 Kommentti on Starter and higher plans, with a personal encrypted server credential for each editor.<\/li>\n<li>Optional server-rendered comment lists with the Publisher and Media Network service plans.<\/li>\n<li>Sign-in, registration, replies and reports inside the article's AJAX widget.<\/li>\n<li>Automatic placement for classic and block theme comment areas.<\/li>\n<li>A Kommentti comments block and the [kommentti_comments] shortcode.<\/li>\n<li>Meta-tag domain verification assistance.<\/li>\n<li>Read-only API credentials kept on the server, encrypted using WordPress salts.<\/li>\n<li>Short-lived comment caching, signed webhook invalidation and page-cache purge hooks.<\/li>\n<li>Existing WordPress comments remain in the WordPress database.<\/li>\n<li>English, Turkish, German, French, Finnish and Spanish interface translations.<\/li>\n<\/ul>\n\n<p>Test your theme and full-page\/CDN cache before deploying to a busy publication. The plugin does not promise search indexing, ranking or citation in AI answers.<\/p>\n\n<h4>External service<\/h4>\n\n<p>A Kommentti account and a verified public HTTPS website are required. Free service includes one website and 500 new comments per month. The plugin is free; paid service features and limits are enforced by Kommentti.<\/p>\n\n<p>The plugin contacts https:\/\/api.kommentti.com only after the administrator configures and permits the service connection. Connection checks send the site ID, site origin and language. Server display sends the site ID, discussion ID, language, page and a private read-only credential in the Authorization header. The credential is never placed in a browser URL or public HTML.<\/p>\n\n<p>On-site moderation is an optional administrator\/editor workflow. Each WordPress user with moderate_comments permission saves their own personal Kommentti moderation key. It is stored encrypted per user and site. An authenticated, nonce-protected WordPress request sends a short-lived challenge, the configured site origin and this key to the Kommentti grant service. A dedicated iframe receives a one-use grant and displays pending comments only after Kommentti verifies site ownership or assigned moderator rights and the eligible service plan. Keys are not exposed to the browser. Removing a local saved key does not revoke it remotely; revoke it in Kommentti when no longer needed.<\/p>\n\n<p>The public comment widget loads the documented Kommentti service script and iframe. Visitors connect directly to Kommentti, which receives connection information such as IP address and browser information, and processes account details and submitted comments. Published comments expose the author's display name, text and dates. This plugin does not send analytics or telemetry.<\/p>\n\n<p>Signed notifications from Kommentti are received at the WordPress REST URL shown in Settings \u2192 Kommentti. These contain event metadata and site\/discussion identifiers, not private account details or comment bodies.<\/p>\n\n<p>Service: https:\/\/kommentti.com\nTerms of use: https:\/\/kommentti.com\/terms\nPrivacy: https:\/\/kommentti.com\/privacy\nSupport and installation: https:\/\/kommentti.com\/developers\nProvider: Cen Medya Limited \u015eirketi, info@kommentti.com<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the kommentti folder to wp-content\/plugins, or upload the ZIP through Plugins \u2192 Add Plugin \u2192 Upload Plugin.<\/li>\n<li>Activate Kommentti Comments. Activation alone does not enable the external service.<\/li>\n<li>Open Settings \u2192 Kommentti. Enter your site ID from your Kommentti dashboard.<\/li>\n<li>If needed, paste the 48-character meta verification value, save, and verify the domain in Kommentti. DNS TXT verification is also supported by the service.<\/li>\n<li>Choose a display mode, post types and placement. Enable the service connection and comments, then save.<\/li>\n<li>Use Test connection and open a published article on your HTTPS website.<\/li>\n<\/ol>\n\n<h4>Server-rendered display<\/h4>\n\n<p>Create a read-only API key under your site's API settings in Kommentti, then save it in the plugin. A Publisher or Media Network service plan is required for this API. Secrets may instead be configured with KOMMENTTI_API_KEY and KOMMENTTI_WEBHOOK_SECRET constants in wp-config.php, optionally populated from environment variables. Do not commit secrets to source control.<\/p>\n\n<p>Copy the webhook receiver URL from the plugin into Kommentti API settings. Save the signing secret generated there in the plugin, and send a test notification. Saving a webhook in Kommentti rotates its secret; update WordPress with the new value.<\/p>\n\n<p>The plugin uses WordPress HTTP requests, TLS verification, no redirects, a two-second timeout and bounded response sizes. Valid snapshots are cached for at most 60 seconds. Expired comments are never served during an API outage; the standard Kommentti widget is used instead. API quotas and comment quotas are separate.<\/p>\n\n<h4>Placement and existing comments<\/h4>\n\n<p>Automatic placement replaces the classic comment template or the core Comments block. In custom layouts, select manual placement and insert the Kommentti comments block or [kommentti_comments]. Use one article discussion per page; duplicate rendering is suppressed. For manual layouts remove the theme's native Comments block if you want to show only the Kommentti discussion.<\/p>\n\n<p>The default discussion ID is the WordPress post ID, matching Kommentti's WordPress WXR import. An administrator may enter an existing discussion ID in the post editor's Kommentti discussion box. Keep the same ID when switching display modes, renaming posts or changing permalinks. Moving posts to another WordPress installation may change post IDs; preserve discussion mappings during migration.<\/p>\n\n<p>To migrate existing WordPress comments, use Tools \u2192 Export, then preview and approve the WXR file in Kommentti. Imports require Starter or above. Existing WordPress comments are not automatically uploaded or deleted. On-site moderation is available through Comments \u2192 Kommentti with a personal connection on Starter and higher plans. This plugin does not provide server-side comment writing, WordPress visitor-account SSO or automatic two-way comment synchronization.<\/p>\n\n<p>Password-protected, draft and excluded post types do not load the widget. The WordPress closed-comments setting hides posting in this integration while preserving the hosted discussion. To enforce a lock for all clients, also lock the discussion in Kommentti.<\/p>\n\n<h4>Cache and deployment<\/h4>\n\n<p>A valid webhook invalidates the matching article's comment snapshot and requests article purges from WP Rocket, WP Super Cache, W3 Total Cache and LiteSpeed when their purge APIs are present. Site-wide events request a site-wide purge. Custom cache integrations can use the kommentti_purge_post and kommentti_purge_site actions.<\/p>\n\n<p>Cloudflare and other external CDN caches need their own purge or expiry policy. A long-lived HTML cache can keep a removed comment visible even after the plugin cache was invalidated. Test your actual cache stack. WP-Cron is not required for incoming webhook invalidation.<\/p>\n\n<p>Configuration is per WordPress site. A staging copy with a different host pauses the integration until the administrator reconnects it. Do not share one site's API key across unrelated WordPress sites. Subdirectory publications sharing one hostname require separate planning because domain changes cannot distinguish those copies.<\/p>\n\n<p>Deactivate the plugin to restore the theme's native comment handling. WordPress comments and hosted Kommentti comments are preserved. Uninstall removes plugin settings, encrypted credentials and cache metadata; existing discussion mappings remain for future reinstallation. Revoke unused server API keys in Kommentti. Rotating WordPress authentication salts makes stored credentials unreadable; re-enter them afterwards.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>Yes. A Kommentti account is required. Standard embedding works with all service plans, including Free. The read API used for server display requires Publisher or Media Network.<\/p><\/dd>\n<dt id=\"are%20comments%20visible%20without%20javascript%3F\"><h3>Are comments visible without JavaScript?<\/h3><\/dt>\n<dd><p>Server mode puts approved comments into the initial page HTML. Reading and pagination work without JavaScript. Account actions, posting, replies and reports require JavaScript. Standard iframe mode requires the service widget.<\/p><\/dd>\n<dt id=\"does%20deactivation%20copy%20hosted%20comments%20into%20wordpress%3F\"><h3>Does deactivation copy hosted comments into WordPress?<\/h3><\/dt>\n<dd><p>No. Hosted comments stay in Kommentti. Existing native comments are preserved. Use the service's supported export\/import tools when planning a migration.<\/p><\/dd>\n<dt id=\"does%20this%20automatically%20register%20wordpress%20users%20with%20kommentti%3F\"><h3>Does this automatically register WordPress users with Kommentti?<\/h3><\/dt>\n<dd><p>No. Readers use their Kommentti account in the inline widget. WordPress user accounts and permissions are not shared with the service.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add personal, role-checked on-site moderation in the WordPress Comments menu.<\/li>\n<li>Use one-use grants and a separate iframe session; keep server keys encrypted per user.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Prepare the WordPress.org submission with verified contributor information and service terms.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First beta: iframe and server HTML modes, setup and diagnostics, block\/shortcode\/theme placement, verification helper, encrypted credentials and signed cache invalidation.<\/li>\n<\/ul>","raw_excerpt":"Hosted comments with a shared Kommentti account, inline sign-in and optional server-rendered HTML. No theme editing required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/394119","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=394119"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kommentti"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=394119"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=394119"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=394119"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=394119"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=394119"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=394119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}