Previously we talked about Hide AdSense Unit on Mobile Devices (Responsive Design). Please look at that image (like infographics) for better understanding of this guide. That was by using CSS. Both CSS and Javascript has problems. PHP is basically good to precisely control. Nowadays, many new WordPress Plugin developers are selling costly WordPress Plugins. But basically you need not to pay for such functions. Here is How To Serve Different AdSense Units on Mobile Devices on WordPress With PHP. WordPress Has Function Which Can Be Used In Free Way.
WordPress, PHP, Different AdSense Units on Mobile Devices and AdSense Policy
Google AdSense is dangerous even after getting caught by Edward Snowden in PRISM data theft. They have spyware ( Read AdSense Javascript and Google Server ) to guess what you are doing. But sadly their spyware often fails and innocent get victimised. Google AdSense can suddenly ban account for policy violations. ACME is well known website which faced ban :
1 2 | http://acme.com/updates/archive/173.html http://marketingland.com/recent-bans-surface-adsense-publishers-complaints-about-google-5569 |
Background was more innocent (and different) for ACME. If you have responsive web design, it is really dangerous for running AdSense. You must understand :
---
- Two AdSense units must not be within 1 – 2 Inch proximity on Mobile. That is they say in complicated way. On mobile device two Ads must not be visible together.
- First AdSense unit must not be a rectangular unit on Mobile.
- Bigger Rectangular AdSense units may not be “legal” on Mobile.
- No AdSense units on 404 Page.
Google AdSense responsive ad units no way solve the problems. In easy words, using Google AdSense responsive ad units is not a defence to policy violation (yeah, it sounds odd). Furthermore, there are technical problems on WordPress – when posts, pages are cached, PHP logical work may not work i.e. static webpage can be served. Google AdSense usually catch policy violation if some click happens. Actually we were unknowingly violating “No AdSense units on 404 Page” for the past 5 years for one unit (top leaderboard). As our layout is common in WordPress, probably you need not to work huge.
Different AdSense Units on Mobile and Desktop Devices
Here are the Fatwa’s by Google AdSense :
1 | https://support.google.com/adsense/answer/1346295?hl=en |
It is not mandatory to serve a responsive unit on desktop. We are giving example with responsive Ad units as examples only. You can use fully fixed size units. This is normal responsive Ad code :
1 2 3 4 5 6 7 8 9 10 | <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- your_unit_name --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxx" data-ad-slot="xxxxxxxx" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> |
We can alter that data-ad-format="auto"
to data-ad-format="rectangle"
or data-ad-format="horizontal"
as written here (under Specify a general shape sub-header) :
1 | https://support.google.com/adsense/answer/6307124#adv |
As example, we can change the above code to force rectangular shapes with data-ad-format="rectangle"
:
1 2 3 4 5 6 7 8 9 10 | <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- your_unit_name --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxx" data-ad-slot="xxxxxxxx" data-ad-format="rectangle"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> |
Now if you serve it only for DESKTOP, anywhere (unless you are doing just deliberate bad work) it is fully “legal” to Google. So, for the same place, same Ad unit, for mobile device, you can use this kind of code to avoid policy violation :
1 2 3 4 5 6 7 8 9 10 | <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- your_unit_name --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxx" data-ad-slot="xxxxxxxx" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> |
Obviously you can force horizontal on mobile too :
1 2 3 4 5 6 7 8 9 10 | <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- your_unit_name --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxx" data-ad-slot="xxxxxxxx" data-ad-format="horizontal"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> |
That data-ad-format="auto"
is safer for mobile devices over data-ad-format="horizontal"
. Now you need to deliver the units rightly for right devices. So essentially you have 2 different ad codes.
WordPress, PHP, Different AdSense Units on Mobile Devices and AdSense Policy
We talked about Ad Injection plugin. Ad Injection plugin is a free plugin and can inject raw PHP code – caching with W3TC or WP Super Cache will not hamper the unit delivery if you use correctly (you should always check yourself from various devices).
Here is WordPress wp_is_mobile()
function :
1 2 | https://codex.wordpress.org/Function_Reference/wp_is_mobile https://developer.wordpress.org/reference/functions/wp_is_mobile/ |
With the below example code (obviously ) you can serve (we kept a Github gist of the below code here) an automatic sized responsive ad unit on mobile and a rectangular size on desktop :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php if ( wp_is_mobile() ) { echo '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- your_unit_name --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxx" data-ad-slot="xxxxxxxxx" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>'; }else if ( !wp_is_mobile() ) { echo '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- your_unit_name --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxx" data-ad-slot="xxxxxxxxx" data-ad-format="rectangle"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>'; } ?> |