В настоящее время у меня установлен мой сайт, где он автоматически добавляет объявление Google Adsense после второго абзаца любой статьи, но я хотел бы улучшить это, если кто-то может помочь.
Я хотел бы добавить к этому коду, чтобы добавить еще 2 объявления; один после шестого абзаца, а другой после 10-го. Если статья не достигает этих номеров абзаца, то объявления не должны отображаться.
Это, наверное, что-то действительно очевидное, но все, что я пробовал, привело к сбою файла functions.php при перезагрузке сайта.
Мой код …
add_filter( 'the_content', 'prefix_insert_post_ads' ); function prefix_insert_post_ads( $content ) { $ad_code = '<div class="mobilead .visible-xs-block hidden-sm hidden-md hidden-lg"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-XXXX" data-ad-slot="1716361890" data-ad-format="auto"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div>'; if ( is_single() && ! is_admin() ) { return prefix_insert_after_paragraph( $ad_code, 2, $content ); } return $content; } // Parent Function that makes the magic happen function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) { $closing_p = '</p>'; $paragraphs = explode( $closing_p, $content ); foreach ($paragraphs as $index => $paragraph) { if ( trim( $paragraph ) ) { $paragraphs[$index] .= $closing_p; } if ( $paragraph_id == $index + 1 ) { $paragraphs[$index] .= $insertion; } } return implode( '', $paragraphs ); }
В качестве дополнительного вопроса – есть ли способ ограничить эти объявления показом только на сообщениях, а не на страницах? В настоящее время они показывают где угодно.
Любая помощь была бы чрезвычайно оценена.
С вашим рекламным кодом слишком сложно ошибиться в попытке угадать, что это должно быть (у него есть открытие <div>
но не закрытие </div>
, у него есть то, что кажется javascript вне <script>
),
… поэтому я пропущу эту часть и просто покажу, как вставить другой p
aragraph – это введет что-то в нужные вам пятна, а также покажет, как использовать get_post_type()
чтобы реклама показывалась только на сообщениях:
add_filter( 'the_content', 'prefix_insert_post_ads' ); function prefix_insert_post_ads( $content ) { //The last condition here ensures that ads are only added to posts if ( is_single() && !is_admin() && get_post_type() === 'post' ) { return prefix_insert_ads( $content ); } return $content; } function prefix_insert_ads( $content ) { $closing_p = '</p>'; $paragraphs = explode( $closing_p, $content ); foreach ($paragraphs as $index => $paragraph) { $paragraphs[$index] .= $closing_p; if ( in_array($index, array(1, 5, 9)) ) { //Replace the html here with a valid version of your ad code $paragraphs[$index] .= '<p style="background:#f00">Ad goes here</p>'; } } return implode( '', $paragraphs ); }
Проверьте функции в разделе Индекс условных тегов с https://codex.wordpress.org/Function_Reference
if(!is_page()) { // do your tricks }
Также есть некоторые другие функции, которые вам могут понадобиться, например is_home()
, is_front_page()
и т. Д.