Как сделать чередование рекламы?

262
22 августа 2017, 14:27

Как сделать чередование рекламы гугл адсенс и яндекс рся?
т.е. в шаблоне single.php нужно сделать, чтобы рекламные блоки адсенс и рся показывались 50/50, по очереди, если показывается адсенс, тогда не должен показываться рся, и также рся.

Answer 1

вот такой вариант, с файлом-счётчиком:

function adv_router(){
    $counter_name = bloginfo('template_directory') . "adv_counter.txt";
    if(!$f = fopen($counter_name, "w")){
        fwrite($f,"0");
        fclose($f);
        exit();
    }
    $f = fopen($counter_name,"r");
    $counterVal = fread($f, filesize($counter_name));
    $route = ++$counterVal % 2;
    $f = fopen($counter_name, "w");
    fwrite($f, $counterVal);
    fclose($f);
    if($route){
       echo // гугл;
    }else{
       echo // яндекс;
    }
}
UPD:

вот такой вариант, с добавлением счётчика в таблицу options:

function adv_router(){
global $wpdb;
$counterVal = 0;
$prefix = $wpdb->prefix;
// или $prefix = $wpdb->base_prefix; // читает префикс из wp_config.php
if(!get_option('adv_counter_01')){
    $wpdb->insert(
        $prefix . 'options',
        array( 'option_name' => 'adv_counter_01', 'option_value' => '0'),
        array( '%s', '%d' )
    ) 
}else{
    $counterVal = ++(get_option('adv_counter_01'));
    update_option( 'adv_counter_01', $counterVal));
}
if($counterVal % 2){
       echo // гугл;
    }else{
       echo // яндекс;
    }
}
Answer 2

Генерируем рандомное число 0 или 1. Далее проверяем. Если число 1 - показываем рекламу гугл, если 0 - показываем рекламу яндекс.

<?php
  $r = mt_rand(0,1);
  if($r) {
    // показываем рекламу гугл
  } else {
    // показываем рекламу яндекс
  }
?>
Answer 3

Надо использовать некое хранилище счетчика - файл или базу данных. Самым быстрым способом будет использование опции WordPress.

$advert = get_option( 'advert', 0 ); // значение по умолчанию - 0, если опция не существует в базе.
if ( 0 === ( $advert % 2 ) ) {
    // остаток от деления на 2 = 0, показываем Google
} else {
    // остаток от деления на 2 = 1, показываем Yandex
}
$advert++; // увеличиваем счетчик
update_option( 'advert', $advert ); // сохраняем в базе
READ ALSO
PHP редирект для Яндекс.Метрика

PHP редирект для Яндекс.Метрика

Имеется сайт для которого запущена рекламная компания от Google AdwordsТак же на сайте стоит система сбора статистики Яндекс Метрика

186
Nordea soap xml

Nordea soap xml

Всем привет, не могу понять какого содержания должен быть xml файл чтобы получить удовлетворительный ответ от сервереВ доке нет никаких примеров...

184
Оптимальный ли конфиг php-fpm?

Оптимальный ли конфиг php-fpm?

Вебсервер: физический сервер состоящий из 6 ядер, 128 гб озу и ssd дискиЧасто жалуются на 502 во время обращения к сайту

175
Для чего может понадобиться extern class

Для чего может понадобиться extern class

Что дает такая конструкция?

182