• Добрый день!

    Есть задача разместить тизерную рекламу автоматически во всех статьях сайта на Вордпресс.
    Рекламный код:

    <div id="numblock_39">загрузка...</div> 
             <script type="text/javascript"> 
             document.write('<scr'+'ipt language="javascript" type="text/javascript" src="http://w977812j.beget.tech/myout.php?g=39"></scr'+'ipt>'); 
             </script>

    Функция, взятая из интернета, для файла functions.php :

    function inject_ad_text_after_n_chars($content) { 
      // реклама отображается при условии, что пост имеет 1000 и более символов 
      $enable_length = 1000; 
      // реклама отображается после первого тега 
     после 500 символов 
      $after_character = 500; 
      if (is_single() && strlen($content) > $enable_length) { 
        $before_content = substr($content, 0, $after_character); 
        $after_content = substr($content, $after_character); 
        $after_content = explode('
    ', $after_content); 
        $text = ' 
         <!-- ЗДЕСЬ ВАШ КОД --> 
        '; 
        array_splice($after_content, 1, 0, $text); 
        $after_content = implode('
    ', $after_content); 
        return $before_content . $after_content; 
      } 
      else { 
        return $content; 
      } 
    } 
    add_filter('the_content', 'inject_ad_text_after_n_chars');

    Вместо <!— ЗДЕСЬ ВАШ КОД —> вставляю рекламный код, сохраняю functions.php — и в результате в середине всей статей вижу только надпись «Загрузка…».

    Вместо добавления функции в functions.php пробовала три плагина для WP — New Adman, Adsense Daemon и quick adsense. Там проще -просто рекламный код вставить в соответствующее поле плагина — но результат такой же. «загрузка…» и все.

    При этом если вставить рекламный код в файл темы single.php — то тизеры отображаются. Но дело в том, что надо выводить их не только в начале, но и в середине статьи.

    вот пример страницы сайта. вверху тизеры есть. ниже — загрузка…
    http://dushka-li.ru/%D0%BD%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BE-%D0%B2%D0%B0%D0%B6%D0%BD%D1%8B%D1%85-%D0%BF%D1%83%D1%81%D1%82%D1%8F%D0%BA%D0%B0%D1%85/

    В чем дело? Подскажите пожалуйста, как исправить.

    • Тема изменена 8 лет, 5 месяцев назад пользователем mariako1.
Просмотр 14 ответов — с 1 по 14 (всего 14)
  • буквально вчера решал задачу вставки рекламы именно в середину записи. дошел до такого кода:

    
    //реклама в середине записи begin
    function the_content_ads( $html ) {
     
    	$ads = 'тут код рекламы';
    	
    	$tempcontent = $html;
        $tempcontent = strip_tags($tempcontent);
    
        $num = ceil(iconv_strlen($tempcontent) / 2);
    	
    	if ( is_single() ) {
    		return preg_replace('~[^^]{'. $num .'}.*?(?:\r?\n\r?\n|</p>|</figure>|</ul>|</pre>|</table>)~su', "\${0}$ads", trim( $html ), 1);
    	} else {
    		return $html;
    	}
    
    }
    add_filter( 'the_content', 'the_content_ads' );
    //реклама в середине записи  end
    

    решал задачу вставки рекламы именно в середину записи. дошел до такого кода

    Работает. Спасибо, Flector. Интересная фишка! Пригодится в жизни. Но по какому принципу определяется «середина записи»? (Мне надо это для того чтобы знать где примерно окажется вставленный контент)

    • Ответ изменён 8 лет, 5 месяцев назад пользователем O.

    Но по какому принципу определяется «середина записи»?

    по прямому — из контента удаляются теги, потом считается число символов и делится пополам. реклама вставляется после указанного числа символов на ближайшем теге закрытия p ul table figure.

    код будет крайне хреново работать, если в контенте лишь один большой-большой параграф текста — там реклама вставится только в конце. издержки производства — плата за то, что реклама не будет вставлена посреди слова или тега.

    При этом если вставить рекламный код в файл темы single.php — то тизеры отображаются.

    код какой? если там спец. символы — их надо экранировать.

    Модератор Юрій

    (@yube)

    На всякий случай, вдруг кому-то php-код выше покажется жутко сложным решением, дам ссылку на плагин http://wp-pro.online/ Более-менее работает, но очень противен до оформления html. Управление размещением работает в бесплатной версии.
    Ни разу не реклама 🙂

    Попробовала Ваш код, к сожалению все то же самое — «загрузка…».

    А на другом сайте тоже на вордпресс все работает..

    Попробовала Ваш код, к сожалению все то же самое — «загрузка…».

    Значит что-то мешает именно на этом сайте. Следует выполнить пункты 4-6.

    код какой? если там спец. символы — их надо экранировать.

    <div id="numblock_39">загрузка...</div> 
             <script type="text/javascript"> 
             document.write('<scr'+'ipt language="javascript" type="text/javascript" src="http://w977812j.beget.tech/myout.php?g=39"></scr'+'ipt>'); 
             </script>

    Значит что-то мешает именно на этом сайте. Следует выполнить пункты 4-6.

    Попробовала поменять тему — действительно, в другой теме все ок, тизеры в середине статьи) Значит дело в теме. Только как понять, где именно..

    Случайно обнаружила, что проблема все-таки не в теме, а в другом: не выводятся тизеры, если один и тот же код повторяется дважды, в начале и в середине статьи.

    Попробовала на двух разных сайтах на WordPress с разными темами.

    Если убрать рекламный код из начала статьи, тогда отобразятся тизеры в середине статьи.

    Это что-то вроде конфликта? Возможно ли сделать так, чтобы один и тот же рекламный код отображался корректно в виде тизеров и в начале, и в середине статьи?

    Значит дело в теме. Только как понять, где именно..

    Что за тема использована на сайте и откуда она скачана?
    https://themeforest.net/item/jj-blog-personal-blog-wordpress-theme/13098190 — это она и куплена здесь?

    Что за тема использована на сайте и откуда она скачана?

    Я к сожалению не в курсе, т.к. не я ее ставила. Этим сайтом занимаюсь с лета. Возможно это вообще самописная тема.

    Но дело не в теме, т.к. на другом сайте то же самое — два одинаковых рекламных кода на одной странице не работают. Выводится только один из них.

    экранируйте:

    
    $ads = '
    <div id="numblock_39">загрузка...</div> 
             <script type="text/javascript"> 
             document.write(\'<scr\'+\'ipt language="javascript" type="text/javascript" src="http://w977812j.beget.tech/myout.php?g=39"></scr\'+\'ipt>\'); 
             </script>
    ';
    

    а во-вторых, где у вас «загрузка»? вижу 2 блока тизеров.

    а во-вторых, где у вас «загрузка»? вижу 2 блока тизеров.

    потому что пока вставила другой рекламный код в начало статьи, и они перестали конфликтовать

Просмотр 14 ответов — с 1 по 14 (всего 14)

Тема «Разместить рекламный код в середине статьи — как правильно?» закрыта для новых ответов.