it-swarm.com.de

Hinzufügen von Anzeigen nach einer bestimmten Anzahl von Absätzen in Genesis

Ich bin so nah, dass ich es fühlen kann. Ich versuche, einen Anzeigenblock zu erhalten, der nach etwa zwei Absätzen angezeigt wird. Derzeit benutze ich den folgenden Code in meiner functions.php, um den Adblock vor den letzten Absatz zu setzen.

Ich kann nicht für mein ganzes Leben den richtigen Code finden, um dies zu erreichen.

function ads_added_above_last_p($text) {
if( is_single() ) :
    $ads_text = '<div class="wpselect_middle_content">My Ad Code Here</div>';
    if($pos1 = strrpos($text, '<p>')){
        $text1 = substr($text, 0, $pos1);
        $text2 = substr($text, $pos1);
        $text = $text1 . $ads_text . $text2;
    }
endif;
return $text;
}
add_filter('the_content', 'ads_added_above_last_p');

Wenn ich mit der zweiten $ text Zeichenkette spiele und $ pos2 setze, funktioniert das perfekt, ABER es dupliziert den gesamten Text innerhalb des Posts.

Jede Hilfe wäre sehr dankbar.

1
Matthew Snider

Ich habe festgestellt, dass explode() nützlich ist, wenn ich versuche, Strings auseinanderzubrechen. Dieser Code erstellt ein Array von Absatzabschnitten, fügt den neuen Block nach zwei Absätzen ein und verkettet ihn zur Ausgabe wieder in eine Zeichenfolge.

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');
3
epilektric