Как показывать рекламу Google между публикациями?


Я хочу показывать объявления Google между текстовым контентом, например, показывать 3 объявления, одно после 1-го пункта, второе после 3-го пункта и одно в конце последнего пункта.

Я знаю, что мне нужно внести изменения в single.php, но, будучи новичком в php, я не могу этого сделать.

Было бы очень полезно, если бы кто-нибудь мог помочь мне сделать это. Спасибо.

Author: Sisir, 2014-04-23

2 answers

Вы можете использовать короткий код или the_content фильтр. Я думаю, что фильтр the_content лучше, потому что вы не вводите никаких строк в свой пост, поэтому контент можно экспортировать и использовать на других платформах, если это необходимо. Для примера, для отображения блока adsense после первого параграфа:

 add_filter( 'the_content', 'tbn_ads_inside_content' );
 function tbn_ads_inside_content( $content ) {

      //We don't want to modify the_content in de admin area
      if( !is_admin() ) {
          $ads = "<p>your_ads_code</p>";
          $p_array = explode('</p>', $content );
          $p_count = 1;

          if( !empty( $p_array ) ){

              array_splice( $p_array, $p_count, 0, $ads );
              $output = '';

              foreach( $p_array as $key=>$value ){

                  $output .= $value;

               }
          }

      }

      return $output;

 }
 3
Author: cybmeta, 2014-04-23 08:16:46

Вот функция, которую я использую для добавления виджета после второго абзаца в сообщении. Это только для первого поста и отдельных постов, поэтому вам нужно будет немного подправить его, если вам нужно показать это во всех постах. Вы должны иметь возможность изменить это в соответствии с вашими потребностями. Надеюсь, это поможет

// Add advertising widget within the firts post and single posts
function pietergoosen_insert_content_after_second_paragraph_filter( $content ) {
    static $first;
    $first = (!isset($first)) ? true : false;
    if (true == $first) {
      ob_start();
      echo '<div class="widget-box">';
         dynamic_sidebar( 'sidebar-19' );
         echo '</div><!-- end .widget-box -->';

      $new_content = ob_get_clean();
      if ( ! is_admin() ) {
          return pietergoosen_insert_content_after_second_paragraph( $new_content, 2, $content );
      }
    }
    return $content;
}
add_filter('the_content','pietergoosen_insert_content_after_second_paragraph_filter');

// Paragraph explode and insert
function pietergoosen_insert_content_after_second_paragraph( $new_content, $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] .= $new_content;
        }
    }
    return implode( '', $paragraphs );
}
 1
Author: Pieter Goosen, 2014-04-23 08:06:08