{"id":50324,"date":"2016-08-16T18:30:38","date_gmt":"2016-08-16T18:30:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/statify-blacklist\/"},"modified":"2026-05-24T12:59:16","modified_gmt":"2026-05-24T12:59:16","slug":"statify-blacklist","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/statify-blacklist\/","author":15090199,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.8.0","stable_tag":"1.8.0","tested":"7.0","requires":"5.1","requires_php":"7.4","requires_plugins":null,"header_name":"Statify Filter","header_author":"Stefan Kalscheuer (@stklcode)","header_description":"","assets_banners_color":"f7f5f1","last_updated":"2026-05-24 12:59:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/statify-blacklist\/","header_author_uri":"https:\/\/www.stklcode.de","rating":5,"author_block_rating":0,"active_installs":2000,"downloads":32493,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.1":{"tag":"1.1.1","author":"stklcode","date":"2016-08-17 05:44:17"},"1.1.2":{"tag":"1.1.2","author":"stklcode","date":"2016-08-17 06:15:20"},"1.2.0":{"tag":"1.2.0","author":"stklcode","date":"2016-08-29 09:09:28"},"1.2.1":{"tag":"1.2.1","author":"stklcode","date":"2016-10-10 07:15:48"},"1.3.0":{"tag":"1.3.0","author":"stklcode","date":"2016-12-07 19:10:45"},"1.3.1":{"tag":"1.3.1","author":"stklcode","date":"2017-06-01 18:10:56"},"1.4.0":{"tag":"1.4.0","author":"stklcode","date":"2017-06-10 12:47:05"},"1.4.1":{"tag":"1.4.1","author":"stklcode","date":"2017-09-06 19:10:39"},"1.4.2":{"tag":"1.4.2","author":"stklcode","date":"2017-11-12 11:19:53"},"1.4.3":{"tag":"1.4.3","author":"stklcode","date":"2018-01-09 19:48:23"},"1.4.4":{"tag":"1.4.4","author":"stklcode","date":"2020-04-09 08:53:36"},"1.5.0":{"tag":"1.5.0","author":"stklcode","date":"2020-05-13 17:16:06"},"1.5.1":{"tag":"1.5.1","author":"stklcode","date":"2020-05-20 08:41:45"},"1.5.2":{"tag":"1.5.2","author":"stklcode","date":"2020-09-03 18:53:26"},"1.6.0":{"tag":"1.6.0","author":"stklcode","date":"2021-03-14 11:05:20"},"1.6.1":{"tag":"1.6.1","author":"stklcode","date":"2022-11-04 09:13:04"},"1.6.2":{"tag":"1.6.2","author":"stklcode","date":"2023-03-27 18:49:25"},"1.6.3":{"tag":"1.6.3","author":"stklcode","date":"2023-08-14 16:58:52"},"1.7.0":{"tag":"1.7.0","author":"stklcode","date":"2024-03-12 15:58:26"},"1.7.1":{"tag":"1.7.1","author":"stklcode","date":"2024-03-24 16:47:36"},"1.7.2":{"tag":"1.7.2","author":"stklcode","date":"2025-04-19 15:47:50"},"1.8.0":{"tag":"1.8.0","author":"stklcode","date":"2026-05-24 12:59:16"}},"upgrade_notice":{"1.8.0":"<p>This release maintenance update that raises the minimum requirements to WordPress 5.1 and PHP 7.4.<\/p>","1.7.2":"<p>This is a bugfix release to restore the manual cleanup function that was broken since 1.7.0.<\/p>","1.7.1":"<p>This is a service release with minor corrections. Recommended for all users. Tested up to 6.5.<\/p>","1.7.0":"<p>This is a service release with primarily internal rework. Tested up to 6.4 and PHP 8.3.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":"1"},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2538977,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2538977,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2538977,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2538977,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3546266,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/options-general.php?page=statify-blacklist\",\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"statify\"}},{\"step\":\"activatePlugin\",\"pluginPath\":\"statify\\\/statify.php\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"statify-blacklist\"},\"options\":{\"activate\":true}},{\"step\":\"activatePlugin\",\"pluginPath\":\"statify-blacklist\\\/statify-blacklist.php\"}]}"}},"all_blocks":[],"tagged_versions":["1.1.1","1.1.2","1.2.0","1.2.1","1.3.0","1.3.1","1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.5.0","1.5.1","1.5.2","1.6.0","1.6.1","1.6.2","1.6.3","1.7.0","1.7.1","1.7.2","1.8.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3546266,"resolution":"1","location":"assets","locale":"","width":647,"height":1052},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3546266,"resolution":"2","location":"assets","locale":"","width":647,"height":947}},"screenshots":{"1":"Statify Filter settings page","2":"Statify Filter settings page (continued)"}},"plugin_section":[],"plugin_tags":[],"plugin_category":[36,54],"plugin_contributors":[225391],"plugin_business_model":[],"class_list":["post-50324","plugin","type-plugin","status-publish","hentry","plugin_category-analytics","plugin_category-security-and-spam-protection","plugin_contributors-stklcode","plugin_committers-stklcode"],"banners":{"banner":"https:\/\/ps.w.org\/statify-blacklist\/assets\/banner-772x250.png?rev=2538977","banner_2x":"https:\/\/ps.w.org\/statify-blacklist\/assets\/banner-1544x500.png?rev=2538977","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/statify-blacklist\/assets\/icon-128x128.png?rev=2538977","icon_2x":"https:\/\/ps.w.org\/statify-blacklist\/assets\/icon-256x256.png?rev=2538977","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/statify-blacklist\/assets\/screenshot-1.png?rev=3546266","caption":"Statify Filter settings page"},{"src":"https:\/\/ps.w.org\/statify-blacklist\/assets\/screenshot-2.png?rev=3546266","caption":"Statify Filter settings page (continued)"}],"raw_content":"<!--section=description-->\n<p>A filter extension for the famous <a href=\"https:\/\/wordpress.org\/plugins\/statify\/\">Statify<\/a> WordPress plugin.<\/p>\n\n<p>This plugin adds customizable filters to Statify to allow blocking of referer spam or internal interactions.<\/p>\n\n<h3>Features<\/h3>\n\n<h4>Referer Filter<\/h4>\n\n<p>Add a list of domains (for simplicity only second-level, e.g. <em>example.com<\/em> which blocks <em>everything.example.com<\/em>).<\/p>\n\n<h4>Target Filter<\/h4>\n\n<p>Add a list of target pages (e.g. <em>\/test\/page\/<\/em>, <em>\/?page_id=123<\/em>) that will be excluded from tracking.<\/p>\n\n<h4>IP Filter<\/h4>\n\n<p>Add a list of IP addresses or subnets (e.g. <em>192.0.2.123<\/em>, <em>198.51.100.0\/24<\/em>, <em>2001:db8:a0b:12f0::\/64<\/em>).<\/p>\n\n<h4>User Agent Filter<\/h4>\n\n<p>Add a list of (partial) user agent strings to exclude (e.g. <em>curl<\/em>, <em>my\/bot<\/em>, <em>Firefox<\/em>).<\/p>\n\n<h4>CleanUp Database<\/h4>\n\n<p>Filters can be applied to data stored in database after modifying filter rules or for one-time clean-up.<\/p>\n\n<h4>Compatibility<\/h4>\n\n<p>This plugin requires Statify to be installed. The extension has been tested with Statify up to version 1.8\nThe plugin is capable of handling multisite installations.<\/p>\n\n<h3>Support &amp; Contributions<\/h3>\n\n<ul>\n<li>If you experience any issues, use the <a href=\"https:\/\/wordpress.org\/support\/plugin\/statify-blacklist\">support forums<\/a>.<\/li>\n<li>Latest sources and development are handled on <a href=\"https:\/\/github.com\/stklcode\/statify-blacklist\">GitHub<\/a>. You might contribute there or file an issue for code related bugs.<\/li>\n<li>If you want to translate this plugin you can do this on <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/statify-blacklist\">WordPress Translate<\/a>.<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<ul>\n<li>Author: Stefan Kalscheuer<\/li>\n<li>Special Thanks to <a href=\"https:\/\/pluginkollektiv.org\/\">pluginkollektiv<\/a> for maintaining <em>Statify<\/em><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ul>\n<li>If you don\u2019t know how to install a plugin for WordPress, <a href=\"https:\/\/wordpress.org\/support\/article\/managing-plugins\/#installing-plugins\">here\u2019s how<\/a>.<\/li>\n<li>Make sure <em>Statify<\/em> plugin is installed and active<\/li>\n<li>Goto <em>Settings<\/em> -&gt; <em>Statify Filter<\/em> to configure the plugin<\/li>\n<\/ul>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>PHP 7.4 or above<\/li>\n<li>WordPress 5.1 or above<\/li>\n<li><em>Statify<\/em> plugin installed and activated (1.5 or above)<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20blocked%20by%20default%3F\"><h3>What is blocked by default?<\/h3><\/dt>\n<dd><p>Nothing. By default, all filters are empty and disabled. They can and have to be filled by the blog administrator.<\/p>\n\n<p>A default filter is not provided, as the plugin itself is totally neutral. If you want to filter out referer spam,\nvisitors from search engines, just \"false\" referrers from 301 redirects or you own IP address used for testing only depends on you.<\/p><\/dd>\n<dt id=\"does%20the%20filter%20effect%20user%20experience%3F\"><h3>Does the filter effect user experience?<\/h3><\/dt>\n<dd><p>No. It only prevents <em>Statify<\/em> from tracking, nothing more or less.<\/p><\/dd>\n<dt id=\"does%20live%20filtering%20impact%20performance%3F\"><h3>Does live filtering impact performance?<\/h3><\/dt>\n<dd><p>Yes, but probably not noticeable. Checking a single referer string against a (usually small) list should be negligible compared to the total loading procedure.\nIf this still is an issue for you, consider deactivating the filter and only run the one-time-cleanup or activate the cron job.<\/p><\/dd>\n<dt id=\"is%20any%20personal%20data%20collected%3F\"><h3>Is any personal data collected?<\/h3><\/dt>\n<dd><p>No. The privacy policy of <em>Statify<\/em> is untouched. Data is only processed, not stored or exposed to anyone.<\/p><\/dd>\n<dt id=\"are%20regular%20expression%20filters%20possible%3F\"><h3>Are regular expression filters possible?<\/h3><\/dt>\n<dd><p>Yes, it is. Just select regular expressions (case-sensitive or insensitive) as matching method instead of exact or keyword match.<\/p><\/dd>\n<dt id=\"why%20is%20ip%20and%20user%20agent%20filtering%20only%20available%20as%20live%20filter%3F\"><h3>Why is IP and User Agent filtering only available as live filter?<\/h3><\/dt>\n<dd><p>As you might know, <em>Statify<\/em> does not store any personal information, including IP addresses in the database.\nBecause of this, these filters can only be applied while processing the request and not afterwards.<\/p><\/dd>\n<dt id=\"can%20whole%20ip%20subnet%20be%20blocked%3F\"><h3>Can whole IP subnet be blocked?<\/h3><\/dt>\n<dd><p>Yes. The plugin features subnet filters using CIDR notation.\nFor example <em>198.51.100.0\/24<\/em> filters all sources from <em>198.51.100.1<\/em> to <em>198.51.100.254<\/em>.\nSame for IPv6 prefixes like <em>2001:db8:a0b:12f0::\/64<\/em>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h3>1.8.0 \/ 24.05.2026<\/h3>\n\n<ul>\n<li>Minimum required WordPress version is 5.1<\/li>\n<li>Minimum required PHP version is 7.4<\/li>\n<li>Declared compatibility with WordPress 7.0<\/li>\n<li>Various internal code improvements<\/li>\n<\/ul>\n\n<h3>1.7.2 \/ 06.06.2024<\/h3>\n\n<ul>\n<li>Restore manual database cleanup functionality<\/li>\n<\/ul>\n\n<h3>1.7.1 \/ 24.03.2024<\/h3>\n\n<ul>\n<li>Fix HTML syntax for checkboxes on settings page<\/li>\n<li>Simplify some internal control structures<\/li>\n<li>Add plugin dependency to Statify<\/li>\n<li>Declared compatibility with WordPress 6.5<\/li>\n<\/ul>\n\n<h3>1.7.0 \/ 11.03.2024<\/h3>\n\n<ul>\n<li>Internal rework of plugin settings<\/li>\n<li>Make the IP filter list unique<\/li>\n<li>Fix options upgrade routine<\/li>\n<li>Declared compatibility with WordPress 6.4<\/li>\n<\/ul>\n\n<h3>1.6.3 \/ 14.08.2023<\/h3>\n\n<ul>\n<li>Minor internal code cleanup<\/li>\n<li>Declared compatibility with WordPress 6.3<\/li>\n<\/ul>\n\n<h3>1.6.2 \/ 25.02.2023<\/h3>\n\n<ul>\n<li>Always process IPv6 addresses lowercase<\/li>\n<li>Optimize internally used regular expression<\/li>\n<li>Minor adjustments to prevent warnings during user agent filtering with PHP 8.2<\/li>\n<\/ul>\n\n<h3>1.6.1 \/ 28.05.2021<\/h3>\n\n<ul>\n<li>Fix storage of user agent filter list (#28, props @BananaSquishee)<\/li>\n<\/ul>\n\n<h3>1.6.0 \/ 09.12.2020<\/h3>\n\n<p>Plugin renamed to <em>Statify Filter<\/em>.<\/p>\n\n<ul>\n<li>Minor accessibility fixes on settings page<\/li>\n<li>Introduced new user agent filter (#20)<\/li>\n<li>Declared compatibility with WordPress 5.6<\/li>\n<\/ul>\n\n<h3>1.5.2 \/ 03.09.2020<\/h3>\n\n<ul>\n<li>Minor translation updates<\/li>\n<li>Declared compatibility with WordPress 5.5<\/li>\n<\/ul>\n\n<h3>1.5.1 \/ 20.05.2020<\/h3>\n\n<ul>\n<li>Fix initialization on AJAX calls for <em>Statify<\/em> 1.7 compatibility (#22)<\/li>\n<\/ul>\n\n<h3>1.5.0 \/ 13.05.2020<\/h3>\n\n<ul>\n<li>Minimum required WordPress version is 4.7<\/li>\n<li>Removed <code>load_plugin_textdomain()<\/code> and <code>Domain Path<\/code> header<\/li>\n<li>Added automatic compatibility check for WP and PHP version (#17)<\/li>\n<li>Added keyword filter mode for referer blacklist (#15)<\/li>\n<li>Layout adjustments on settings page<\/li>\n<li>Regular expression filters are validated before saving (#13)<\/li>\n<\/ul>\n\n<h3>1.4.4 \/ 19.05.2018<\/h3>\n\n<ul>\n<li>Fix live filter chain when regular expressions are active (#12)<\/li>\n<\/ul>\n\n<h3>1.4.3 \/ 09.01.2018<\/h3>\n\n<ul>\n<li>Fix issues with multisite installation (#11)<\/li>\n<\/ul>\n\n<h3>1.4.2 \/ 12.11.2017<\/h3>\n\n<ul>\n<li>Minor code fixes<\/li>\n<\/ul>\n\n<h3>1.4.1 \/ 16.07.2017<\/h3>\n\n<ul>\n<li>Relicensed to GPLv2 or later<\/li>\n<li>Fix filter hook if referer is disabled (#9)<\/li>\n<li>Fix problem with faulty IPv6 netmask in IP blacklist<\/li>\n<li>Minor changes for WP Coding Standard<\/li>\n<li>Minimum required WordPress version is 4.4 (#10)<\/li>\n<\/ul>\n\n<h3>1.4.0 \/ 10.06.2017<\/h3>\n\n<ul>\n<li>IP blacklist implemented (#7)<\/li>\n<li>Target page blacklist implemented (#8)<\/li>\n<li>Internal configuration restructured (upgrade on plugin activation)<\/li>\n<li>Statify hook name changed to <code>statify__skip_tracking<\/code> (as of Statify 1.5.0)<\/li>\n<\/ul>\n\n<h3>1.3.1 \/ 09.12.2016<\/h3>\n\n<ul>\n<li>Continue filtering if no filter applies (#6)<\/li>\n<\/ul>\n\n<h3>1.3.0 \/ 17.10.2016<\/h3>\n\n<ul>\n<li>Regular expressions filtering implemented<\/li>\n<\/ul>\n\n<h3>1.2.1 \/ 10.10.2016<\/h3>\n\n<ul>\n<li>Fix live filter configuration check<\/li>\n<\/ul>\n\n<h3>1.2.0 \/ 29.08.2016<\/h3>\n\n<ul>\n<li>Switched from <code>in_array()<\/code> to faster <code>isset()<\/code> for referer checking<\/li>\n<li>Optional cron execution implemented<\/li>\n<\/ul>\n\n<h3>1.1.2 \/ 17.08.2016<\/h3>\n\n<ul>\n<li>Prepared for localization<\/li>\n<\/ul>\n\n<h3>1.1.1 \/ 16.08.2016<\/h3>\n\n<ul>\n<li>Some security fixes<\/li>\n<\/ul>\n\n<h3>1.1.0 \/ 15.08.2016<\/h3>\n\n<ul>\n<li>One-time execution on database<\/li>\n<\/ul>\n\n<h3>1.0.0 \/ 14.08.2016<\/h3>\n\n<ul>\n<li>First release<\/li>\n<\/ul>","raw_excerpt":"Filter extension for the famous Statify WordPress plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/50324","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=50324"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/stklcode"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=50324"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=50324"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=50324"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=50324"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=50324"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=50324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}