{"id":23682,"date":"2013-06-03T00:49:27","date_gmt":"2013-06-03T00:49:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/freemyinternet\/"},"modified":"2026-08-09T02:35:09","modified_gmt":"2026-08-09T02:35:09","slug":"freemyinternet","status":"publish","type":"plugin","link":"https:\/\/pan.wordpress.org\/plugins\/freemyinternet\/","author":259,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.3","requires":"6.8","requires_php":"8.2","requires_plugins":null,"header_name":"FreeMyInternet","header_author":"Lester 'GaMerZ' Chan","header_description":"","assets_banners_color":"0e1116","last_updated":"2026-08-09 02:35:09","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/lesterchan.net\/site\/donation\/","header_plugin_uri":"https:\/\/lesterchan.net\/portfolio\/programming\/php\/","header_author_uri":"https:\/\/lesterchan.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":3668,"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":"GamerZ","date":"2026-08-09 02:35:09"}},"upgrade_notice":{"1.0.0":"<p>Requires WordPress 6.8 and PHP 8.2.<\/p>\n\n<p><strong>The notice is off by default, and the built-in 2013 campaign banner is gone.<\/strong> 0.01 blacked the site out the moment it was activated, using an image from a domain that no longer resolves, so visitors saw a black screen. Write your own notice under <code>Settings -&amp;gt; FreeMyInternet<\/code>, pick a presentation and tick <strong>Show the notice<\/strong>.<\/p>\n\n<p><strong>The global <code>freemyinternet()<\/code> function is gone.<\/strong> It was the entire plugin in 0.01, hooked to <code>the_title<\/code> and <code>get_header<\/code>, and a theme or snippet calling it directly will now stop the page with a fatal error. There is nothing to call in its place: the notice renders itself from the settings, and where it appears is decided by the <code>freemyinternet_should_display<\/code> filter.<\/p>\n\n<p><strong>Fixed:<\/strong> a bug that emptied every post title on the site.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1207346,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":1207346,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3639523,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3639523,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3639025,"resolution":"1","location":"assets","locale":"","width":1100,"height":1479},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3639025,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3639025,"resolution":"3","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Settings -&gt; FreeMyInternet, where the notice, its colours and the window it appears in are set","2":"The full-screen blackout, as a visitor meets it","3":"The same notice as a top banner, which leaves the site readable"}},"plugin_section":[],"plugin_tags":[784,12758,2502,1334,9172],"plugin_category":[],"plugin_contributors":[77620],"plugin_business_model":[],"class_list":["post-23682","plugin","type-plugin","status-publish","hentry","plugin_tags-banner","plugin_tags-blackout","plugin_tags-censorship","plugin_tags-notice","plugin_tags-protest","plugin_contributors-gamerz","plugin_committers-gamerz"],"banners":{"banner":"https:\/\/ps.w.org\/freemyinternet\/assets\/banner-772x250.png?rev=3639523","banner_2x":"https:\/\/ps.w.org\/freemyinternet\/assets\/banner-1544x500.png?rev=3639523","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/freemyinternet\/assets\/icon-128x128.png?rev=1207346","icon_2x":"https:\/\/ps.w.org\/freemyinternet\/assets\/icon-256x256.png?rev=1207346","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/freemyinternet\/assets\/screenshot-1.png?rev=3639025","caption":"Settings -&gt; FreeMyInternet, where the notice, its colours and the window it appears in are set"},{"src":"https:\/\/ps.w.org\/freemyinternet\/assets\/screenshot-2.png?rev=3639025","caption":"The full-screen blackout, as a visitor meets it"},{"src":"https:\/\/ps.w.org\/freemyinternet\/assets\/screenshot-3.png?rev=3639025","caption":"The same notice as a top banner, which leaves the site readable"}],"raw_content":"<!--section=description-->\n<p>Put a protest notice on your site. Choose between a <strong>full-screen blackout<\/strong> that covers the whole site, and a <strong>top banner<\/strong> that leaves your content readable, then write your own heading, message, link and colours.<\/p>\n\n<p>Everything is configured under <code>Settings -&gt; FreeMyInternet<\/code>. Nothing is shown to visitors until you switch it on.<\/p>\n\n<p>This plugin was written in June 2013 to support the FreeMyInternet campaign against the Media Development Authority of Singapore's licensing scheme, and originally displayed that campaign's banner and nothing else. Since 1.0.0 it is a general-purpose protest and blackout plugin, so it can be used for whatever you are protesting. The initial idea came from xenomancer's <a href=\"https:\/\/wordpress.org\/plugins\/censor-me\/\" title=\"Censor Me\">Censor Me<\/a>.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Two presentations: full-screen blackout, or a top banner<\/li>\n<li>Your own heading, message, call-to-action link and colours<\/li>\n<li>Optional image<\/li>\n<li><strong>Schedule<\/strong> \u2014 set a start and end date and the notice appears and disappears on its own<\/li>\n<li><strong>Dismissable<\/strong> \u2014 an optional close button, remembered per visitor until you change the notice<\/li>\n<li>Never renders in <code>wp-admin<\/code> or on the login screen, so it cannot lock you out<\/li>\n<li>No extra HTTP requests \u2014 the few kilobytes of CSS and JavaScript are inlined, and only while a protest is actually running<\/li>\n<\/ul>\n\n<h3>Donations<\/h3>\n\n<p>I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Use the <code>freemyinternet_should_display<\/code> filter to control where the notice appears \u2014 for example, to show it to logged-out visitors only:<\/p>\n\n<pre><code>add_filter( 'freemyinternet_should_display', function ( $display, $options ) {\n    return $display &amp;&amp; ! is_user_logged_in();\n}, 10, 2 );\n<\/code><\/pre>\n\n<p>Use the <code>freemyinternet_capability<\/code> filter to hand the settings screen to a capability other than <code>manage_options<\/code>:<\/p>\n\n<pre><code>add_filter( 'freemyinternet_capability', function ( $capability, $context ) {\n    return 'edit_pages';\n}, 10, 2 );\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <code>WP-Admin -&gt; Settings -&gt; FreeMyInternet<\/code> and write your heading, message, link and colours, and choose the full-screen blackout or the top banner.<\/li>\n<li>Switch it on. <strong>Nothing is shown to visitors until you do<\/strong>, so you can set it up in advance and turn it on when you mean to.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"i%20activated%20the%20plugin%20and%20nothing%20happens\"><h3>I activated the plugin and nothing happens<\/h3><\/dt>\n<dd><p>That is deliberate. Write a heading or a message under <code>Settings -&gt; FreeMyInternet<\/code> and tick <strong>Show the notice<\/strong>. A notice with no heading and no message is never displayed.<\/p><\/dd>\n<dt id=\"the%20notice%20is%20switched%20on%20but%20visitors%20do%20not%20see%20it\"><h3>The notice is switched on but visitors do not see it<\/h3><\/dt>\n<dd><p>Check the schedule. If the end date has passed, or the start date has not arrived, nothing is rendered. The settings screen warns you when the current date is outside the window.<\/p><\/dd>\n<dt id=\"will%20it%20black%20out%20my%20dashboard%3F\"><h3>Will it black out my dashboard?<\/h3><\/dt>\n<dd><p>No. The notice renders on the front end only \u2014 never in <code>wp-admin<\/code>, never on the login screen.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20it%20on%20some%20pages%20only%3F\"><h3>How do I show it on some pages only?<\/h3><\/dt>\n<dd><p>Use the <code>freemyinternet_should_display<\/code> filter, described above.<\/p><\/dd>\n<dt id=\"can%20visitors%20close%20it%3F\"><h3>Can visitors close it?<\/h3><\/dt>\n<dd><p>Only if you tick <strong>Let visitors dismiss it<\/strong>. The dismissal is remembered in the visitor's browser until you change the notice's text or schedule, at which point it is shown again.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h3>1.0.0<\/h3>\n\n<ul>\n<li>BREAKING: Requires WordPress 6.8 and PHP 8.2.<\/li>\n<li>BREAKING: The notice is now <strong>off by default<\/strong>, and the built-in 2013 campaign banner is gone. See the upgrade notice below<\/li>\n<li>BREAKING: The global <code>freemyinternet()<\/code> function is removed. It was the whole plugin \u2014 hooked to <code>the_title<\/code> and <code>get_header<\/code> \u2014 and any theme or snippet calling it directly will fatal<\/li>\n<li>NEW: Rewritten as a general-purpose protest plugin \u2014 write your own heading, message, link, image and colours instead of a fixed campaign banner<\/li>\n<li>NEW: Two presentations \u2014 full-screen blackout, or a top banner that leaves the site readable<\/li>\n<li>NEW: Optional start and end date, outside which nothing is displayed<\/li>\n<li>NEW: Optional dismiss button, remembered per visitor until the notice changes<\/li>\n<li>NEW: Settings screen at <code>Settings -&gt; FreeMyInternet<\/code>, built on the WordPress Settings API<\/li>\n<li>NEW: <code>freemyinternet_should_display<\/code> filter, for controlling where the notice appears<\/li>\n<li>NEW: <code>freemyinternet_capability<\/code> filter, for handing the settings screen to another capability<\/li>\n<li>CHANGED: Restructured into <code>includes\/<\/code>, with every setting in the <code>freemyinternet_options<\/code> row and the plugin and schema versions in <code>freemyinternet_version<\/code><\/li>\n<li>CHANGED: CSS and JavaScript are inlined instead of being served as separate files, and the jQuery dependency is gone<\/li>\n<li>CHANGED: The stylesheet is written with CSS logical properties, so one sheet serves both writing directions<\/li>\n<li>FIXED: The banner callback was registered on the <code>the_title<\/code> filter but returned nothing, which emptied <strong>every title on the site<\/strong> \u2014 in the document title, navigation menus, widgets and archive listings \u2014 and emitted a copy of the banner at each one<\/li>\n<li>FIXED: The banner image was loaded over plain HTTP from <code>freemyinternet.com<\/code>, which no longer resolves. The result was an opaque black layer covering the site with no image, no dismissal and a dead link<\/li>\n<\/ul>","raw_excerpt":"Display a site-wide protest banner or full-screen blackout overlay, with an optional start and end date.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/23682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=23682"}],"author":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gamerz"}],"wp:attachment":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=23682"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=23682"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=23682"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=23682"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=23682"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=23682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}