Adding ads after a certain number of paragraphs within Genesis themework

I’ve found explode() to be useful when trying to break strings apart. This code creates an array of paragraph chunks, inserts the new block after two paragraphs and concatenates it back into a string for output.

function insert_ad_block( $text ) {

    if ( is_single() ) :

        $ads_text="<div class="wpselect_middle_content">My Ad Code Here</div>";
        $split_by = "\n";
        $insert_after = 2; //number of paragraphs

        // make array of paragraphs
        $paragraphs = explode( $split_by, $text);

        // if array elements are less than $insert_after set the insert point at the end
        $len = count( $paragraphs );
        if (  $len < $insert_after ) $insert_after = $len;

        // insert $ads_text into the array at the specified point
        array_splice( $paragraphs, $insert_after, 0, $ads_text );

        // loop through array and build string for output
        foreach( $paragraphs as $paragraph ) {
            $new_text .= $paragraph; 
        }

        return $new_text;

    endif;

    return $text;

}
add_filter('the_content', 'insert_ad_block');

Leave a Comment