Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

WordPress is one of many publishers' most commonly used content management systems. AdEngine integration works with WordPress as seamlessly as with any other web page. However, some known issues can be avoided due to the use of plugins. Following those simple guidelines will help with smooth implementation.

AdEngine implementation

AdEngine implementation in WordPress should be done directly in page codes for the best effectiveness. In the header and body, plugins are allowed; however, please notice the possible issues listed below.

...

  • "Top Leaderboard"

    • ad-unit-name: topleaderboard

    • div-name: adngin-topleaderboard-0

  • "Sidebar"

    • ad-unit-name: sidebar

    • div-name: adngin-sidebar-0

Header code

The head section modifications are the fundamental part of the integration. Without adding the AdEngine script and configuration to the head, the ads won't render.

...

  • Replace **site.domain** with the actual site domain

  • Place the script at the very top of the header to ensure the best possible performance

  • If Google Analytics is used, place the AdEngine tag after the Google Analytics tag

  • Keep the correct order of the tags: first configuration and then loading of AdEngine

Header edition in WordPress

Most WordPress plugins don’t allow editing of a header - only allowing to inject code into the body.

...

Code Block
breakoutModewide
languagephp
<?php wp_head(); ?>
<script data-cfasync="false" type="text/javascript">
  window.snigelPubConf = {
    "adengine": {
      "activeAdUnits": ["topleaderboard","sidebar"]
    }
  }
</script>
<script data-cfasync="false" async src="https://cdn.snigelweb.com/adengine/**site.domain**/loader.js" type="text/javascript"></script>
</head>

Body codes

The page body needs to define div elements to be filled with ads. They need to be placed where the ad should be displayed.
The div elements should reserve the maximum width and height of the displayed ad to prevent Cumulative Layout Shift (CLS). If you are using ad labeling, reserve an additional 15px of height for the label. Please consult your account manager to get the exact ad sizes to reserve the proper space.

...

  • If div elements need to be reused, provide the information to your account manager.

Keep in mind when implementing AdEngine in WordPress

  1. Ensure that both codes for snigelPubConf and loader.js have the elements:

    • data-cfasync="false"

    • async

  2. Do not place scripts from Snigel in minify and cache plugins; if it can't be avoided, place them in exclude from minify and cache section.

  3. Clear cache - server and CDN to have a real overview if the implementation is correct and not causing any issues. It's often when this step is missed; an issue is visible only days or weeks after implementation.

How to run an A/B test on WordPress

A/B test on WordPress between AdEngine and, in this example, AdSense. An A/B test - in this case, 50%/50% requires a decision in the header on which script should be injected. The Body, to make the test easier, should contain both tags. This is just an example of how the A/B test 50/50 could be executed in such a situation.

Code Block
breakoutModewide
languagejs
<script type="text/javascript">
        function appendScript(url){
            var head = document.getElementsByTagName('head')[0];
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.setAttribute('async', 'async');
			script.setAttribute('data-cfasync', 'false');
            script.src = url;
            head.appendChild(script);
        }
        if (Math.random() >= 0.5) {
            appendScript('https://cdn.snigelweb.com/adengine/**domain.com**/loader.js');
        } else {
			appendScript('https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js');
        }
    </script>

Is it possible to condition if AdEngine works depending on my plugin settings?

It’s possible to condition how AdEngine will be called - using pubConfig. If a specific plugin gives the possibility to read the settings from the PHP level, it can allow steering the pubConfig elements.

...

(info) Using WordPress functions can help to manage the display of ads depending on different conditions like page template, category, etc. Please read WordPress documentation for the correct functions.

Anchor

...

Limitations

...

Limitations
Limitations of Cache and Minify

...

While very useful, multiple WP plugins used for code optimization can create many problems with ad stack performance and implementation.

...

Minify plugins do a search on the page for all the content, then join all files - JS and CSS - without order or dependencies, and mix before displaying it on the page. After that, they inject all the code and then compress the page. It impacts how several elements of the page work, especially the ad stack loader.

...

Optimization Plugins

Minification Plugins
Minification plugins scan your page content and combine all JavaScript (JS) and CSS files, often disregarding their order or dependencies. After merging, they inject the code into the page and compress it. This process can disrupt the functionality of several elements, particularly the ad stack loader.

Caching Plugins
Caching plugins store old versions of scripts. When

...

The typical issues:

  • Ads stop appearing,

  • CMP starts being called multiple times,

  • Scripts stop working completely,

  • Impact on A/B test run with different partners,

  • Use of data-cfasync="true" to minify scripts by Cloudflare RocketLoader

  • Changes don't show due to old versions of the scripts being cached.

Some of the typical plugins causing these sorts of issues:

...

WP-Rocket

...

W3 Total Cache

...

RocketLauncher

...

NitroPack

...

updates or fixes are made, the new versions may not load correctly, causing the fixes to be ineffective.

Common Issues Caused by These Plugins

  • Ads stop displaying.

  • CMP (Consent Management Platform) is called multiple times.

  • Scripts stop functioning entirely.

  • Negative impact on A/B testing with various partners.

  • Changes are not reflected due to old scripts being cached.

To avoid these issues, it’s recommended to exclude Snigel ad scripts from optimization in your plugin settings. Below are instructions for popular plugins:

Plugin-Specific Exclusion Instructions

Autoptimize
Autoptimize Plugin

  • Exclude CSS and JS from aggregation and minification by adding them to the comma-separated exclusion list.

Async JavaScript
Async JavaScript Plugin

  • Skip specific CSS and JS code by adding theim to Async JavaScript > Settings > Script Exclusion.

Breeze
Breeze Plugin

  • Exclude JS from optimization under Breeze > File Optimization > JS Settings. Ensure that JS Minify is disabled.

Debloat
Debloat Plugin

  • Exclude CSS: Go to Debloat > Optimize CSS > Exclude Styles and add the CSS exclusions.

  • Exclude JS: Go to Debloat > Optimize JS > Exclude Scripts and add the necessary scripts.

Flying Scripts
Flying Scripts Plugin

  • Navigate to Flying Scripts > Settings > Include Keywords, and ensure that keywords such as "snigelweb," "adengine," "loader.js," or any others that reference the scripts needing exclusion are not listed.

NitroPack
NitroPack Plugin

  • Go to Exclusions > Excluded Resources and add the scripts that need to be excluded.

Perfmatters
Perfmatters Plugin

  • Add scripts to the exclusion list under Perfmatters > Assets > JavaScript > Exclude for Deferral and Perfmatters > Assets > JavaScript > Excluded from Delay.

RocketLauncher
RocketLauncher Guide

  • Ensure scripts are excluded by adding the attribute data-cfasync="false" to your scripts, e.g., <script data-cfasync="false" src="/javascript.js"></script>.

WP Fastest Cache
WP Fastest Cache Plugin

  • Navigate to WP Fastest Cache > Exclude > Exclude JS and add the scripts to the exclusion list.

WP Rocket
WP Rocket Plugin

  • Go to WP Rocket > File Optimization > JavaScript Files > Excluded JavaScript Files and add the necessary scripts.

W3 Total Cache
W3 Total Cache Plugin

  • By default, W3 Total Cache does not cache external scripts. However, if files are being minified, go to Performance > Minify > Advanced > Never Minify following JS files and add the required exclusions.