{"id":258812,"date":"2025-11-11T05:21:58","date_gmt":"2025-11-11T05:21:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smart-spam-cleaner\/"},"modified":"2025-11-11T11:14:54","modified_gmt":"2025-11-11T11:14:54","slug":"smart-spam-cleaner","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/smart-spam-cleaner\/","author":23201491,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.1","stable_tag":"trunk","tested":"6.4.8","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Smart Spam Cleaner","header_author":"Shivam Kumar","header_description":"Deletes users and posts in background via WP-Cron. You can choose to delete users, posts, or both. Uses batch and logs every step.","assets_banners_color":"ffffff","last_updated":"2025-11-11 11:14:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/ceowizzyweb\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":169,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"ceowizzyweb","date":"2025-11-11 11:14:54"}},"upgrade_notice":{"":"<p>Bug fix release addressing WordPress review team feedback. Improves file path handling, security, and WordPress guidelines compliance. No database changes required.<\/p>\n\n<p>Major update with dynamic filter configuration, improved UI, and enhanced security. Backup your database before upgrading.<\/p>\n\n<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3393397,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3393397,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3393397,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3393397,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3393369,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3393369,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3393369,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3393369,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Main cleanup page - Modern, responsive design with clear options","2":"Filter settings page - Dynamic configuration of keywords, domains, and conditions","3":"Progress tracking - Real-time progress bar and status updates","4":"Log viewer - Detailed logging of all cleanup activities"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[11137,3786,4567,599,1917],"plugin_category":[54,59],"plugin_contributors":[250514,250513],"plugin_business_model":[],"class_list":["post-258812","plugin","type-plugin","status-publish","hentry","plugin_tags-batch","plugin_tags-cleanup","plugin_tags-cron","plugin_tags-spam","plugin_tags-users","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-ceodigitecholic","plugin_contributors-ceowizzyweb","plugin_committers-ceowizzyweb"],"banners":{"banner":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/banner-772x250.png?rev=3393397","banner_2x":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/banner-1544x500.png?rev=3393397","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/icon-128x128.png?rev=3393397","icon_2x":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/icon-256x256.png?rev=3393397","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/screenshot-1.png?rev=3393369","caption":"Main cleanup page - Modern, responsive design with clear options"},{"src":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/screenshot-2.png?rev=3393369","caption":"Filter settings page - Dynamic configuration of keywords, domains, and conditions"},{"src":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/screenshot-3.png?rev=3393369","caption":"Progress tracking - Real-time progress bar and status updates"},{"src":"https:\/\/ps.w.org\/smart-spam-cleaner\/assets\/screenshot-4.png?rev=3393369","caption":"Log viewer - Detailed logging of all cleanup activities"}],"raw_content":"<!--section=description-->\n<p>Smart Spam Cleaner provides an efficient way to remove spam users and posts from your WordPress site. It uses background processing via WordPress cron jobs to handle large datasets without impacting your site's performance.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Dynamic Filtering<\/strong> - Configure your own spam keywords and email domains<\/li>\n<li><strong>Advanced Conditions<\/strong> - Use AND\/OR logic to combine keyword and domain filters<\/li>\n<li><strong>Include\/Exclude Domains<\/strong> - Specify which email domains to target or protect<\/li>\n<li><strong>Flexible Post Handling<\/strong> - Choose between moving posts to trash or permanent deletion<\/li>\n<li><strong>Background Processing<\/strong> - Uses WordPress cron jobs for non-blocking cleanup operations<\/li>\n<li><strong>Batch Processing<\/strong> - Processes users and posts in small batches to avoid server overload<\/li>\n<li><strong>Smart Detection<\/strong> - Identifies spam users based on customizable patterns<\/li>\n<li><strong>Detailed Logging<\/strong> - Comprehensive logging of all cleanup activities<\/li>\n<li><strong>Modern UI<\/strong> - Beautiful, responsive admin interface with progress tracking<\/li>\n<li><strong>Security<\/strong> - Built-in security measures including nonce verification and capability checks<\/li>\n<li><strong>Configurable<\/strong> - Customizable batch sizes and spam keywords<\/li>\n<\/ul>\n\n<h4>What Gets Deleted<\/h4>\n\n<p><strong>Users:<\/strong>\nThe plugin uses your configured filters to determine which users to delete:<\/p>\n\n<ul>\n<li>Keyword Matching - Users with spam keywords in email, username, or display name<\/li>\n<li>Domain Filtering - Users with email domains in your include list (or all domains except exclude list)<\/li>\n<li>Condition Logic:\n\n<ul>\n<li>OR: Delete if user matches ANY keyword OR domain filter<\/li>\n<li>AND: Delete if user matches ALL keyword AND domain filters<\/li>\n<\/ul><\/li>\n<li>Only affects users with the 'subscriber' role<\/li>\n<\/ul>\n\n<p><strong>Posts:<\/strong><\/p>\n\n<ul>\n<li>Published posts containing spam keywords in the title or content<\/li>\n<li>Uses your configured post keywords list<\/li>\n<li>Deletion Mode:\n\n<ul>\n<li>Move to Trash: Posts are moved to WordPress trash (recoverable)<\/li>\n<li>Permanent Delete: Posts are permanently deleted (irreversible)<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Clean up spam user registrations<\/li>\n<li>Remove bot-generated users<\/li>\n<li>Delete users from specific spam domains<\/li>\n<li>Clean up casino\/gambling spam posts<\/li>\n<li>Bulk delete spam comments authors<\/li>\n<li>Protect legitimate users while removing spam<\/li>\n<\/ul>\n\n<h4>Safety Features<\/h4>\n\n<ul>\n<li>Only processes users with 'subscriber' role<\/li>\n<li>Requires administrator privileges to run<\/li>\n<li>Includes confirmation dialogs<\/li>\n<li>Provides detailed logging for transparency<\/li>\n<li>Always backup your database before running cleanup operations<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<h4>Default Settings<\/h4>\n\n<ul>\n<li><strong>Batch Size<\/strong> - 500 items per batch<\/li>\n<li><strong>User Keywords<\/strong> - btc, binance, crypto, telegram, usd, tinkoff, money, trading, wallet, forex, meta, xrp, airdrop, bam, bet, eur, rub, invest, usdt, euro<\/li>\n<li><strong>User Domains<\/strong>:\n\n<ul>\n<li>Include: (empty - all domains)<\/li>\n<li>Exclude: gmail.com<\/li>\n<\/ul><\/li>\n<li><strong>User Condition<\/strong> - OR<\/li>\n<li><strong>Post Keywords<\/strong> - casino, gambling, slots, bet, poker, blackjack, win money, jackpot, spin, roulette, wager, baccarat<\/li>\n<li><strong>Post Deletion Mode<\/strong> - Move to Trash (recoverable)<\/li>\n<\/ul>\n\n<h4>Customization<\/h4>\n\n<p>You can modify the default settings through the admin interface or by adding the following to your <code>wp-config.php<\/code> file:<\/p>\n\n<pre><code>\/\/ Custom batch size\ndefine('WWSSC_BATCH_SIZE', 1000);\n<\/code><\/pre>\n\n<h3>Support<\/h3>\n\n<p>For support, feature requests, or bug reports, please visit our <a href=\"https:\/\/wizzyweb.com\/support\">support page<\/a>.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin does not collect, store, or transmit any user data outside of your WordPress installation. All operations are performed locally on your server.<\/p>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>Administrator privileges<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>Developed by <a href=\"https:\/\/wizzyweb.com\">WizzyWeb Private Limited<\/a><\/p>\n\n<h3>Important<\/h3>\n\n<p><strong>Always backup your database before running any cleanup operations. This plugin performs destructive operations that cannot be undone.<\/strong><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/smart-spam-cleaner<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Use the Users \u2192 Delete Users &amp; Spam Posts screen to configure and run the cleanup<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='is%20this%20plugin%20safe%20to%20use%3F'><h3>Is this plugin safe to use?<\/h3><\/dt>\n<dd><p>Yes, the plugin includes several safety measures:\n* Only processes users with 'subscriber' role\n* Requires administrator privileges to run\n* Includes confirmation dialogs\n* Provides detailed logging for transparency\n* <strong>Always backup your database before running cleanup operations<\/strong><\/p><\/dd>\n<dt id='how%20do%20i%20configure%20the%20filters%3F'><h3>How do I configure the filters?<\/h3><\/dt>\n<dd><ol>\n<li>Go to <strong>Users \u2192 Spam Filter Settings<\/strong><\/li>\n<li>Add your desired keywords and domains<\/li>\n<li>Choose your filter condition (AND\/OR)<\/li>\n<li>Save settings<\/li>\n<li>Run the cleanup from the main plugin page<\/li>\n<\/ol><\/dd>\n<dt id='what%27s%20the%20difference%20between%20and%20and%20or%20conditions%3F'><h3>What's the difference between AND and OR conditions?<\/h3><\/dt>\n<dd><ul>\n<li><strong>OR Condition<\/strong> - Delete user if they match ANY keyword OR domain filter<\/li>\n<li><strong>AND Condition<\/strong> - Delete user only if they match ALL keyword AND domain filters<\/li>\n<\/ul><\/dd>\n<dt id='how%20do%20include%2Fexclude%20domains%20work%3F'><h3>How do include\/exclude domains work?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Include Domains<\/strong> - Only delete users with these email domains<\/li>\n<li><strong>Exclude Domains<\/strong> - Never delete users with these email domains (e.g., gmail.com)<\/li>\n<li>If Include is empty, all domains are targeted except excluded ones<\/li>\n<li>If Exclude is empty, no domains are protected<\/li>\n<\/ul><\/dd>\n<dt id='what%27s%20the%20difference%20between%20trash%20and%20permanent%20deletion%20for%20posts%3F'><h3>What's the difference between trash and permanent deletion for posts?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Move to Trash<\/strong> - Posts are moved to WordPress trash bin where they can be recovered or permanently deleted later<\/li>\n<li><strong>Permanent Delete<\/strong> - Posts are immediately and permanently deleted from the database (cannot be recovered)<\/li>\n<li><strong>Recommendation<\/strong> - Use \"Move to Trash\" for safety, then review and permanently delete from trash if needed<\/li>\n<\/ul><\/dd>\n<dt id='how%20long%20does%20the%20cleanup%20take%3F'><h3>How long does the cleanup take?<\/h3><\/dt>\n<dd><p>The duration depends on:\n* Number of users\/posts to process\n* Server performance\n* Batch size settings\n* WordPress cron frequency<\/p>\n\n<p>For large sites, the process may take several hours but runs in the background.<\/p><\/dd>\n<dt id='can%20i%20stop%20the%20cleanup%20process%3F'><h3>Can I stop the cleanup process?<\/h3><\/dt>\n<dd><p>The cleanup process runs via WordPress cron jobs. You can stop it by:\n1. Deactivating the plugin\n2. Clearing scheduled cron events\n3. Restarting your web server<\/p><\/dd>\n<dt id='what%20happens%20if%20the%20process%20is%20interrupted%3F'><h3>What happens if the process is interrupted?<\/h3><\/dt>\n<dd><p>The plugin uses batch processing with progress tracking. If interrupted, you can restart the process and it will continue from where it left off.<\/p><\/dd>\n<dt id='can%20i%20customize%20the%20spam%20keywords%3F'><h3>Can I customize the spam keywords?<\/h3><\/dt>\n<dd><p>Yes! You can add, remove, or modify keywords through the <strong>Spam Filter Settings<\/strong> page. The interface allows you to dynamically manage your keyword lists.<\/p><\/dd>\n<dt id='does%20this%20affect%20my%20site%27s%20performance%3F'><h3>Does this affect my site's performance?<\/h3><\/dt>\n<dd><p>The plugin is designed to minimize performance impact:\n* Runs in background via cron jobs\n* Processes data in small batches\n* Uses efficient database queries\n* Includes built-in delays between batches<\/p><\/dd>\n<dt id='where%20can%20i%20find%20the%20cleanup%20log%3F'><h3>Where can I find the cleanup log?<\/h3><\/dt>\n<dd><p>All cleanup activities are logged to: <code>wp-content\/uploads\/smart-spam-cleaner\/smart-spam-cleaner.log<\/code><\/p>\n\n<p>The log file contains:\n* Timestamps for all operations\n* Number of users\/posts processed in each batch\n* Success\/failure status for each deletion\n* Completion messages<\/p><\/dd>\n<dt id='can%20i%20use%20this%20plugin%20programmatically%3F'><h3>Can I use this plugin programmatically?<\/h3><\/dt>\n<dd><p>Yes! You can customize filters using WordPress filters:<\/p>\n\n<pre><code>add_filter('wwssc_user_filters', function($filters) {\n    $filters['keywords'][] = 'custom_keyword1';\n    $filters['keywords'][] = 'custom_keyword2';\n    $filters['domains']['include'][] = 'spamdomain.com';\n    $filters['domains']['exclude'][] = 'trusted.com';\n    $filters['condition'] = 'AND';\n    return $filters;\n});\n\nadd_filter('wwssc_post_filters', function($filters) {\n    $filters['keywords'][] = 'custom_keyword1';\n    $filters['keywords'][] = 'custom_keyword2';\n    return $filters;\n});\n<\/code><\/pre><\/dd>\n<dt id='can%20i%20change%20the%20batch%20size%3F'><h3>Can I change the batch size?<\/h3><\/dt>\n<dd><p>Yes! You can configure batch size in the settings page (range: 50-2000).<\/p>\n\n<p>You can also define a custom batch size in your <code>wp-config.php<\/code> file:<\/p>\n\n<pre><code>define('WWSSC_BATCH_SIZE', 1000);\n<\/code><\/pre><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with basic functionality<\/li>\n<li>FIXED: File path issues - Now uses <code>wp_upload_dir()<\/code> instead of <code>WP_CONTENT_DIR<\/code> (WordPress guidelines compliance)<\/li>\n<li>FIXED: Removed <code>wp_set_current_user()<\/code> call from cron function (security improvement)<\/li>\n<li>FIXED: Removed Plugin URI from header (standard for plugins under review)<\/li>\n<li>IMPROVED: Better error handling for uploads directory failures<\/li>\n<li><p>IMPROVED: Added documentation comments explaining WordPress best practices<\/p><\/li>\n<li><p>NEW: Dynamic filter configuration system<\/p><\/li>\n<li>NEW: Configurable spam keywords and email domains<\/li>\n<li>NEW: Include\/exclude domain functionality<\/li>\n<li>NEW: AND\/OR condition logic for filters<\/li>\n<li>NEW: Post deletion mode (trash vs permanent delete)<\/li>\n<li>NEW: Settings page with modern UI<\/li>\n<li>NEW: Real-time filter management<\/li>\n<li>IMPROVED: Complete rewrite with modern architecture<\/li>\n<li>IMPROVED: Enhanced UI with responsive design<\/li>\n<li>IMPROVED: Better error handling and logging<\/li>\n<li><p>IMPROVED: AJAX-powered admin interface<\/p><\/li>\n<li><p>Initial release with basic functionality<\/p><\/li>\n<li>Background processing via WP-Cron<\/li>\n<li>Basic spam detection<\/li>\n<li>Simple admin interface<\/li>\n<\/ul>","raw_excerpt":"Remove spam users and posts using background processing with dynamic filters.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/258812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=258812"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ceowizzyweb"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=258812"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=258812"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=258812"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=258812"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=258812"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=258812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}