| 开发者 |
markasstudio
studiomarkas |
|---|---|
| 更新时间 | 2026年6月1日 18:27 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
wa.me link that you configure.
The plugin is built around a single settings panel, has no third-party tracking, and ships with a .pot translation template.
What this plugin does
wa.me URL that you provide.[talkdock_button] for placing inline buttons inside content.wa.me click-to-chat URL format published by WhatsApp).
How it connects to WhatsApp
TalkDock does not communicate with WhatsApp servers from your site. It simply renders an <a> link pointing to a wa.me URL that you enter in the settings. The conversation opens in the WhatsApp app or WhatsApp Web on the visitor's device, exactly as it would if you placed a regular wa.me link in your content. No data is sent to WhatsApp by the plugin itself, and no external API is called.
Pro version
A paid TalkDock Pro add-on is sold separately from this free plugin and is not hosted on WordPress.org. The free plugin is fully functional on its own — nothing in the feature list above requires Pro. The "Pro Features" tab inside the plugin describes what the paid add-on offers and links to it. You can ignore the Pro tab entirely; the free plugin will continue to work without it.
Developers
Hooks available for extensions:
talkdock_loaded — fires after all components boot.talkdock_default_settings — filter to register additional default keys.talkdock_sanitize_settings — filter to sanitize additional keys.talkdock_should_render_widget — gate the frontend render.talkdock_widget_href — final-stage URL filter.talkdock_widget_css — modify the generated widget stylesheet. The legacy talkdock_inline_css filter is still called for backward compatibility, but CSS is written through the generated stylesheet path.talkdock_register_admin_submenu — register additional submenus under the parent slug.talkdock_admin_tab_content — inject content into additional tabs./wp-content/plugins/.https://wa.me/15551234567 and customize colors and position.Use the format https://wa.me/<country-code><phone-number> — for example https://wa.me/15551234567. Do not include the plus sign or any spaces.
Yes. The plugin enqueues static assets and a sanitized generated stylesheet for the saved design settings, so the button renders correctly with standard page caching.
The free version supports targeting by visitor login state and by screen size (hide on mobile). Per-page targeting (specific posts, pages, products, URL patterns) is offered by the separate Pro add-on and is not included in this free plugin.
No. Deactivation preserves all settings. Settings are removed only when you delete the plugin, and even then you can opt in to preserve data.
Free support is provided through the WordPress.org support forum for this plugin.
No. TalkDock is an independent plugin developed by Markas Studio. It is not affiliated with, endorsed by, or connected to WhatsApp LLC or Meta Platforms, Inc.
talkdock across plugin headers, gettext calls, and the POT template, external service disclosure is explicit, Report-a-Bug uploads are sanitized and validated at the boundary, and frontend design CSS is generated from validated values instead of printed as raw inline CSS.https://studio.markashosting.com/plugins/talkdock/, including docs, support, TalkDock Pro, Terms of Use, and Privacy Policy permalinks.wp_remote_post as success, so a 413 / 429 / 500 from the receiver slipped through as ok = true; (b) the receiver's body cap was 1 MB while the plugin permits up to 3 × 5 MB images, so a typical multi-screenshot bug report exceeded the cap. The dispatcher now requires an actual 2xx status before reporting success; on non-2xx the modal shows an honest "Saved locally — receiver was unreachable" warning and leaves itself open so the user can resend. The receiver-side cap (in the Markas Studio dashboard's plugin-bug intake) has been raised to 12 MB to match the plugin's spec'd wire budget with comfortable headroom.{ success: true, id: <post_id>, message: '...' } on a successful intake, where id is the reference number of the recorded report on the receiver side. The previous dispatcher discarded the body entirely on 2xx and returned only { ok, status } upstream, so the receiver's reference number was lost between layers. The dispatcher now decodes the response body, extracts the id field (accepting entry_id as a forward-compat alias), and propagates it as remote_entry_id through the dispatch result → local log row → AJAX response → modal history pill. The user-facing success message now includes the receiver-assigned reference ("Thanks — your report has been recorded (ref #847)."), and the Previous Reports panel renders sent rows as "Sent · #847" so the user has a number to cite in any follow-up. Pre-1.0.8 log entries that lack the field render as "Sent" with no reference, gracefully — no data migration required.Sent / Local only / Not delivered). Reads from the existing bounded local log; no new options are created. Lazy-loaded on first expand.tlkd_feedback_log option no longer stores the base64-encoded attachment binary. With 50 entries × up to 15 MB raw attachments, the option row could theoretically reach ~750 MB and slow every admin page load. The log now stores per-attachment metadata only (name, MIME, byte count); the audit trail is preserved, the bloat hazard is gone.User-Agent no longer includes home_url(). The readme privacy section already promised the plugin never auto-attaches your site URL, but the previous header TalkDock/1.0.7; <home_url> shipped it on every dispatch. The receiver-side dashboard derives the source host from the Origin / Referer header (unchanged), so the User-Agent is now plain TalkDock/1.0.8.$_FILES superglobal is read in three places inside process_attachments() (existence check, raw-array capture, per-file loop). The previous build used an inline phpcs:ignore that only covered one line and left the other two flagged. Replaced with a method-scoped phpcs:disable / phpcs:enable pair stacking both WordPress.Security.NonceVerification.Missing and WordPress.Security.ValidatedSanitizedInput.InputNotSanitized. Each suppression carries a one-line justification naming the mitigation. No behavioural change.target="_blank" link in the plugin's admin views now uses rel="noopener noreferrer" (was rel="noopener"). noopener neutralizes reverse-tabnabbing; noreferrer additionally suppresses the Referer header so the destination site does not learn which wp-admin/admin.php?page=… page the click came from.User-Agent header no longer contains home_url(), per the readme's privacy guarantee.max-height cap. The status banner is also auto-scrolled into view when it appears. The dialog now also offsets for the WordPress admin bar (32px / 46px) so it never sits beneath it on desktop.backdrop-filter: blur(8px) scrim with a solid dim (rgba(15, 16, 20, 0.62)) that renders deterministically regardless of WP admin chrome stacking contexts. The previous blur approach caused "ghost" rendering where tabs and buttons bled through the backdrop. Removed the associated defensive isolation: isolate and z-index: 0 hacks that were only propping up the broken filter.filemtime()-based version. Any byte-level change to admin/css/admin.css or admin/js/admin.js now forces an immediate browser refetch even when the plugin version has not been bumped (the recurring iteration-on-a-single-tag cache problem). The headline plugin version stays visible in ?ver=… because the new format is TLKD_VERSION.MTIME with a graceful fallback to plain TLKD_VERSION if the file cannot be stat'd.100dvh (fixes iOS Safari toolbar overlap), added safe-area-inset padding for notched devices, and reduced the body padding so all fields stay reachable on narrow screens.prefers-reduced-motion; the spinner is hidden from assistive tech; the live status region continues to announce send/success/error.talkdock_feedback_payload, talkdock_feedback_dispatch) all remain identical.TLKD_Feedback. Three WordPress.Security.NonceVerification.Missing warnings inside process_attachments() — the method accesses $_FILES['attachments'] to read uploaded screenshots; the request nonce is verified by the caller handle_ajax() via check_ajax_referer( 'tlkd_feedback', 'nonce' ) before process_attachments() is ever invoked. PHPCS cannot follow the call chain, so the suppression is confined to the body of process_attachments() via a targeted phpcs:disable/phpcs:enable pair with a one-line justification. Two WordPress.DB.DirectDatabaseQuery warnings inside get_mysql_version() — the method runs SELECT VERSION() as a one-shot server-version probe; there is no cache to invalidate and no plugin or user data being queried. Suppressed locally with a one-line justification. No behavioural change.tlkd_feedback_log, 50 most recent entries, removed on uninstall unless data is preserved).talkdock_feedback_payload and talkdock_feedback_dispatch filters let extensions modify the payload or replace the default dispatcher.== Privacy == section to this readme describing exactly what the Report-a-Bug flow transmits.wa.me click-to-chat link, which is documented throughout the description, FAQ, and admin UI.[talkdock_button].custom_wa_* standalone snippet.