CCCPaste

AdSense post feed injection

// ============================================================================
// 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() {
    ?>