{"id":265641,"date":"2025-12-11T13:35:31","date_gmt":"2025-12-11T13:35:31","guid":{"rendered":"https:\/\/cn.wordpress.org\/plugins\/wxs-text-watermarking\/"},"modified":"2025-12-16T08:04:06","modified_gmt":"2025-12-16T08:04:06","slug":"wxs-text-watermarking","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/wxs-text-watermarking\/","author":23058077,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.2","stable_tag":"1.1.2","tested":"6.9.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Wxs Text Watermarking","header_author":"twsh0305","header_description":"Add blind watermark to article content, support multiple insertion methods and custom configurations, filter UA whitelist","assets_banners_color":"82c6f2","last_updated":"2025-12-16 08:04:06","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/wxsnote.cn\/zanzhu","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/wxs-text-watermarking\/","header_author_uri":"https:\/\/wxsnote.cn","rating":0,"author_block_rating":0,"active_installs":30,"downloads":393,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"twsh0305","date":"2025-12-13 05:43:43"},"1.1.1":{"tag":"1.1.1","author":"twsh0305","date":"2025-12-14 07:49:49"},"1.1.2":{"tag":"1.1.2","author":"twsh0305","date":"2025-12-16 08:04:06"}},"upgrade_notice":{"1.1.2":"<p>Fixed Remove cache control<\/p>","1.1.1":"<p>Added exclude code and url<\/p>","1.1.0":"<p>Fixed js code to avoid displaying text confusion, added user group judgment to decide whether to insert text blind watermarking for specified users according to user permissions, and loaded custom function judgment to judge whether to insert text blind watermarking according to your theme or plug-in user group<\/p>","1.0.9":"<p>Fixed multilingual translation internationalization issues, ensuring proper display in different language environments.<\/p>","1.0.8":"<p>Resolved 4 key issues: WP local time usage, Zibi Theme CSF Framework compatibility, PHP 8.x errors, and global JS article ineffectiveness. Critical for PHP 8.x users.<\/p>","1.0.7":"<p>Added element selection functions (tag, class, ID), enabling more precise watermark insertion positions. Upgrade for flexible configuration.<\/p>","1.0.6":"<p>Fixed file import errors that caused plugin loading failures. Must upgrade if experiencing activation issues.<\/p>","1.0.5":"<p>Fixed missing styles in the CSF Framework settings panel. Upgrade to restore normal interface display.<\/p>","1.0.4":"<p>Resolved blank page issue on some WordPress settings panels. Upgrade if encountering configuration page access failures.<\/p>","1.0.3":"<p>Added JS control functionality, laying the foundation for static mode. Recommended for users needing cached page support.<\/p>","1.0.2":"<p>Introduced CSF Framework and created settings panel for visual configuration. Upgrade from 1.0.1 for easier management.<\/p>","1.0.1":"<p>Completed basic plugin creation. Required upgrade from 1.0.0 for formal use.<\/p>","1.0.0":"<p>Initial version with pure function hook code. Upgrade to later versions for complete functionality.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3417332,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-1544x500-zh_CN.png":{"filename":"banner-1544x500-zh_CN.png","revision":3417974,"resolution":"1544x500","location":"assets","locale":"zh_CN"},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3417974,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250-zh_CN.png":{"filename":"banner-772x250-zh_CN.png","revision":3417974,"resolution":"772x250","location":"assets","locale":"zh_CN"},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3417974,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1","1.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1-zh_CN.png":{"filename":"screenshot-1-zh_CN.png","revision":3417341,"resolution":"1","location":"assets","locale":"zh_CN"},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3417332,"resolution":"1","location":"assets","locale":""},"screenshot-2-zh_CN.png":{"filename":"screenshot-2-zh_CN.png","revision":3417341,"resolution":"2","location":"assets","locale":"zh_CN"},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3417332,"resolution":"2","location":"assets","locale":""},"screenshot-3-zh_CN.png":{"filename":"screenshot-3-zh_CN.png","revision":3417341,"resolution":"3","location":"assets","locale":"zh_CN"},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3417332,"resolution":"3","location":"assets","locale":""},"screenshot-4-zh_CN.png":{"filename":"screenshot-4-zh_CN.png","revision":3417341,"resolution":"4","location":"assets","locale":"zh_CN"},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3417332,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Plugin basic settings panel interface","2":"Watermark content configuration page","3":"Debug mode effect display page","4":"Online watermark extraction tool interface"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1987,2972,1178,749,3241],"plugin_category":[54],"plugin_contributors":[252105],"plugin_business_model":[],"class_list":["post-265641","plugin","type-plugin","status-publish","hentry","plugin_tags-blind","plugin_tags-copyright","plugin_tags-protection","plugin_tags-text","plugin_tags-watermark","plugin_category-security-and-spam-protection","plugin_contributors-twsh0305","plugin_committers-twsh0305"],"banners":{"banner":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/banner-772x250.png?rev=3417974","banner_2x":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/banner-1544x500.png?rev=3417974","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/icon-128x128.png?rev=3417332","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/screenshot-1.png?rev=3417332","caption":"Plugin basic settings panel interface"},{"src":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/screenshot-2.png?rev=3417332","caption":"Watermark content configuration page"},{"src":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/screenshot-3.png?rev=3417332","caption":"Debug mode effect display page"},{"src":"https:\/\/ps.w.org\/wxs-text-watermarking\/assets\/screenshot-4.png?rev=3417332","caption":"Online watermark extraction tool interface"}],"raw_content":"<!--section=description-->\n<p>This is a specialized text copyright protection tool designed for WordPress blogs. It enables copyright tracing and infringement evidence collection of original content by embedding invisible blind watermark information in article content.<\/p>\n\n<p>Core Features:\n-- Flexible Watermark Embedding Methods: Insert at paragraph end (balances invisibility and integrity), random position insertion (supports custom count or auto-calculation by word ratio), fixed interval insertion (default 20 words, suitable for long texts).\n-- Rich Watermark Information Dimensions: Customizable traceability info including visitor IP (supports proxy recognition), user identification (logged-in ID\/guest mark), timestamp (accurate to seconds, YYYY-MM-DD HH:MM:SS), and custom text (copyright statements, website identifiers).\n-- Intelligent Adaptation Mechanism: Short paragraph filtering (configurable min word count, default 20), crawler recognition (no watermarks for search engine crawlers to avoid SEO impact), dual-end processing modes (dynamic PHP-only for non-cached scenarios, static JS-only for cached pages, hybrid mode recommended for cached sites).\n-- Convenient Debugging and Management: Debug mode (displays visible watermarks as [Watermark Debug:...]), intuitive configuration panel (via WordPress backend \"Text Watermark\" menu), data cleaning (auto-clears config on uninstallation).<\/p>\n\n<p>Working Principle:\nBased on Variation Selectors in the Unicode character set (<code>U+FE00-U+FE0F<\/code>, <code>U+E0100-U+E01EF<\/code>) which are visually invisible. Watermark generation converts info (IP, user ID, etc.) to byte sequences, then to variation selector characters via mapping algorithm. Invisible characters are embedded per rules and restored via reverse parsing during extraction.<\/p>\n\n<p>Installation Requirements:\n- Server environment: PHP 7.4\n- WordPress version: 6.3<\/p>\n\n<p>User Guide:\nBasic Configuration:\n1. Enable blind watermark in \"Basic Settings\", select operation mode (hybrid mode recommended).\n2. Configure minimum paragraph word count (15-30 recommended) and insertion method.\n3. Set parameters for random\/fixed interval insertion as needed.<\/p>\n\n<p>Watermark Content Configuration:\nCheck desired info in \"Watermark Content Settings\": Visitor IP (default enabled), User ID (default enabled), Timestamp (default enabled), Custom text (supports domain\/copyright statements).<\/p>\n\n<p>Debugging and Verification:\n1. Enable \"Debug Mode\", publish article to view visible watermarks (<code>[Watermark Debug:...]<\/code>).\n2. Confirm positions and content are correct, then turn off debug mode.<\/p>\n\n<p>Watermark Extraction:\n1. Online tool: Visit <a href=\"https:\/\/wxsnote.cn\/wbmsy\">Official text blind watermark<\/a>, paste text for parsing.\n2. Online tool: Visit <a href=\"https:\/\/textwatermark.zhheo.com\/\">Heo Text Watermark<\/a>, paste text for parsing.\n3. Use the extraction function provided in the <a href=\"https:\/\/github.com\/twsh0305\/text_watermarking\/\">GitHub<\/a> source code (file path: <code>example.php<\/code>).<\/p>\n\n<p>Plugin based on open-source projects:\n- Background framework: <a href=\"https:\/\/github.com\/Codestar\/codestar-framework\">Codestar Framework<\/a>\n- Encryption scheme: <a href=\"https:\/\/github.com\/paulgb\/emoji-encoder\">Emoji Encoder<\/a><\/p>\n\n<p>License Details:\nUse and modification permitted, but original copyright notice must be retained (prohibits removing\/modifying author info in code). Modified versions must be open-sourced as GPLv2 or later with full source code available.<\/p>\n\n<p>Author Information:\n- Author: twsh0305\n- Blog: <a href=\"https:\/\/wxsnote.cn\/\">Mr. Wang's Notes<\/a>\n- Principle Introduction: <a href=\"https:\/\/wxsnote.cn\/6395.html\">Implementation of text blind watermark technology<\/a>\n- QQ Group: <a href=\"https:\/\/jq.qq.com\/?_wv=1027&amp;k=eiGEOg3i\">399019539<\/a>\n- Open Source Address: <a href=\"https:\/\/github.com\/twsh0305\/text_watermarking\">GitHub<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Download the plugin source code zip package.<\/li>\n<li>Log in to WordPress backend, go to \"Plugins\" \u2192 \"Add New\" \u2192 \"Upload Plugin\".<\/li>\n<li>After activation, access the configuration page via left menu \"Text Watermark\".<\/li>\n<li>Enable the plugin and configure parameters (enable debug mode first for testing).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='are%20the%20blind%20watermarks%20visible%20to%20readers%3F'><h3>Are the blind watermarks visible to readers?<\/h3><\/dt>\n<dd><p>No. The watermarks use Unicode Variation Selectors that are visually invisible and do not affect reading experience or text layout.<\/p><\/dd>\n<dt id='will%20the%20plugin%20affect%20my%20website%27s%20seo%3F'><h3>Will the plugin affect my website's SEO?<\/h3><\/dt>\n<dd><p>No. It has built-in search engine crawler UA filtering rules, so no watermarks are inserted for crawlers, avoiding any impact on SEO.<\/p><\/dd>\n<dt id='how%20to%20extract%20watermark%20information%20from%20suspected%20infringing%20text%3F'><h3>How to extract watermark information from suspected infringing text?<\/h3><\/dt>\n<dd><p>Two methods: 1. Use the online tool at <a href=\"https:\/\/wxsnote.cn\/wbmsy\">Official text blind watermark<\/a> or <a href=\"https:\/\/textwatermark.zhheo.com\/\">Heo Text Watermark<\/a> by pasting the text. 2.Use the extraction function provided in the <a href=\"https:\/\/github.com\/twsh0305\/text_watermarking\/\">GitHub<\/a> source code (file path: <code>example.php<\/code>).<\/p><\/dd>\n<dt id='does%20the%20plugin%20support%20cached%20wordpress%20sites%3F'><h3>Does the plugin support cached WordPress sites?<\/h3><\/dt>\n<dd><p>Yes. It offers three processing modes: hybrid mode (recommended) uses PHP for logged-in users and JS for visitors, ensuring watermarks work normally on cached sites.<\/p><\/dd>\n<dt id='what%20happens%20to%20the%20plugin%27s%20configuration%20when%20i%20uninstall%20it%3F'><h3>What happens to the plugin's configuration when I uninstall it?<\/h3><\/dt>\n<dd><p>The plugin automatically clears all configuration data during uninstallation, leaving no redundant residues in the database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fixed Remove cache control<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Added exclude code and url<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added: User Rights Control<\/li>\n<li>Fixed: js code causes content location disorder<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Added: Multilingual internationalization, <\/li>\n<li>Fixed: External resource localization<\/li>\n<li>Fixed: Compliance with WordPress plugin development specifications, using WP functions<\/li>\n<\/ul>\n\n<p>To read the changelog for Wxs Text Watermarking, please navigate to the <a href=\"https:\/\/github.com\/twsh0305\/text_watermarking\/\">Github page<\/a>.<\/p>","raw_excerpt":"Embeds invisible blind watermarks to enable copyright tracing and infringement evidence collection for original content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/265641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=265641"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/twsh0305"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=265641"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=265641"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=265641"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=265641"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=265641"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=265641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}