// ============================================================================
// AdSense Direct Injection System
// ============================================================================
// Code Snippets Compatible Version
// ============================================================================
// Add AdSense Script to Head
add_action('wp_head', 'add_adsense_injection_script', 1);
function add_adsense_injection_script() {
echo '';
}
// Main Ad Injection Function
add_action('wp_enqueue_scripts', 'enqueue_adsense_feed_injection');
function enqueue_adsense_feed_injection() {
// Page Detection - Only load on pages with feeds
$should_load = false;
//if (is_archive() || is_search() || is_home() || is_front_page()) {
// $should_load = true;
//}
//if (is_singular(array('post', 'place', 'event', 'job'))) {
// $should_load = true;
//}
$current_page_slug = get_post_field('post_name', get_the_ID());
$feed_page_slugs = array('explore');
if (in_array($current_page_slug, $feed_page_slugs)) {
$should_load = true;
}
$should_load = apply_filters('direct_ads_should_load', $should_load);
if (!$should_load) {
return;
}
//wp_enqueue_script('jquery');
// ========================================================================
// CONFIGURE YOUR ADSENSE ADS HERE
// ========================================================================
$multi_feed_config = array(
'placesarchive' => array(
'selector' => '.placesfeed',
//'interval' => 4,
'positions' => array(1, 11, 21),
'ads' => array(
array(
'type' => 'adsense',
'client' => 'ca-pub-XXXXXXXXXXXXXXXX',
'slot' => 'XXXXXXXXXX',
'format' => 'fluid', // or 'auto', 'rectangle', 'horizontal', 'vertical'
'layout_key' => '-6r+di+5g-2m-8y', // copy from AdSense
'priority' => 3,
'enabled' => true
),
array(
'type' => 'adsense',
'client' => 'ca-pub-XXXXXXXXXXXXXXXX',
'slot' => 'XXXXXXXXXX',
'format' => 'fluid',
'layout_key' => '',
'priority' => 2,
'enabled' => true
),
array(
'type' => 'adsense',
'client' => 'ca-pub-XXXXXXXXXXXXXXXX',
'slot' => 'XXXXXXXXXX',
'format' => 'fluid',
'layout_key' => '',
'priority' => 1,
'enabled' => true
),
)
),
'eventsarchive' => array(
'selector' => '.eventsfeed',
'interval' => 4,
//'positions' => array(2, 8, 12),
'ads' => array(
array(
'type' => 'adsense',
'client' => 'ca-pub-XXXXXXXXXXXXXXXX',
'slot' => 'XXXXXXXXXX',
'format' => 'fluid',
'layout_key' => '',
'priority' => 3,
'enabled' => true
),
array(
'type' => 'adsense',
'client' => 'ca-pub-XXXXXXXXXXXXXXXX',
'slot' => 'XXXXXXXXXX',
'format' => 'fluid',
'layout_key' => '',
'priority' => 2,
'enabled' => true
),
array(
'type' => 'adsense',
'client' => 'ca-pub-XXXXXXXXXXXXXXXX',
'slot' => 'XXXXXXXXXX',
'format' => 'fluid',
'layout_key' => '',
'priority' => 1,
'enabled' => true
),
)
),
// add your own feed here
);
// Process feeds
$processed_feeds = array();
foreach ($multi_feed_config as $feed_key => $feed_config) {
$ads = array();
$use_positions_mode = isset($feed_config['positions']) && is_array($feed_config['positions']);
$interval = isset($feed_config['interval']) ? $feed_config['interval'] : 0;
$max_ads = isset($feed_config['max_ads']) ? $feed_config['max_ads'] : 999;
if (isset($feed_config['ads']) && is_array($feed_config['ads'])) {
foreach ($feed_config['ads'] as $index => $ad_config) {
if (!isset($ad_config['enabled']) || !$ad_config['enabled']) {
continue;
}
if (!isset($ad_config['type'])) {
continue;
}
$ad_data = array(
'type' => $ad_config['type'],
'priority' => isset($ad_config['priority']) ? $ad_config['priority'] : 0,
'index' => $index
);
if ($ad_config['type'] === 'adsense') {
if (!isset($ad_config['client']) || !isset($ad_config['slot'])) {
continue;
}
$ad_data['client'] = $ad_config['client'];
$ad_data['slot'] = $ad_config['slot'];
$ad_data['format'] = isset($ad_config['format']) ? $ad_config['format'] : 'auto';
if (isset($ad_config['layout_key'])) {
$ad_data['layout_key'] = $ad_config['layout_key'];
}
} elseif ($ad_config['type'] === 'html') {
if (!isset($ad_config['content'])) {
continue;
}
$ad_data['content'] = $ad_config['content'];
} else {
continue;
}
$ads[] = $ad_data;
}
}
usort($ads, function($a, $b) {
return $b['priority'] - $a['priority'];
});
$processed_feeds[$feed_key] = array(
'selector' => $feed_config['selector'],
'ads' => $ads,
'config' => array(
'mode' => $use_positions_mode ? 'positions' : 'interval',
'interval' => $interval,
'positions' => $use_positions_mode ? $feed_config['positions'] : array(),
'max_ads' => $max_ads
)
);
}
if (!empty($processed_feeds)) {
$json_data = wp_json_encode($processed_feeds);
wp_add_inline_script('jquery', 'var directAdsFeedData = ' . $json_data . ';');
if (!defined('DONOTCACHEPAGE')) {
define('DONOTCACHEPAGE', true);
}
}
}
// Output JavaScript in Footer
add_action('wp_footer', 'output_adsense_injection_javascript', 20);
function output_adsense_injection_javascript() {
?>