it-swarm.com.de

Inhalt nach dem ersten und zweiten Absatz anzeigen

Die folgende Funktion wird verwendet, um bestimmte Inhalte nach dem ersten Absatz anzuzeigen. Ich möchte 'Inhalt X' nach dem 1. Absatz und 'Inhalt Y' nach dem 2. Absatz anzeigen.

<?php
$paragraphAfter= 1; //display after the first paragraph
$content = apply_filters('the_content', get_the_content());
$content = explode("</p>", $content);
for ($i = 0; $i <count($content); $i++ ) {
if ($i == $paragraphAfter) { ?>

<div>Insert content here</div>

<?php }
echo $content[$i] . "</p>";
} ?>

Ich freue mich über jede Hilfe.

3
BóbGCA

Mein Weg dies zu tun ( siehe Update unten ):

function addParagraphs($content) {
    // you can add as many as you want:
    $additions = array(
        '<p>After 1st paragraph</p>',
        '<p>After 2nd paragraph</p>'
    );

    $content = get_the_content();

    $output = ''; // define variable to avoid PHP warnings

    $parts = explode("</p>", $content);

    $count = count($parts); // call count() only once, it's faster

    for($i=0; $i<$count; $i++) {
        $output .= $parts[$i] . '</p>' . $additions[$i]; // non-existent additions does not concatenate
    }
    return $output;

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

Antwort wird nach nachfolgenden Kommentaren aktualisiert :

$paragraphAfter[1] = '<div>AFTER FIRST</div>'; //display after the first paragraph
$paragraphAfter[3] = '<div>AFTER THIRD</div>'; //display after the third paragraph
$paragraphAfter[5] = '<div>AFTER FIFtH</div>'; //display after the fifth paragraph

$content = apply_filters( 'the_content', get_the_content() );
$content = explode("</p>", $content);
$count = count($content);
for ($i = 0; $i < $count; $i++ ) {
    if ( array_key_exists($i, $paragraphAfter) ) {
        echo $paragraphAfter[$i];
    }
    echo $content[$i] . "</p>";
}
7
Max Yudin

Ich wusste, dass es eine alte Frage ist, aber diese Antwort sollte den Leuten helfen, die noch danach suchen.

Dieses Plugin funktioniert perfekt in jedem Thema.

https://wordpress.org/plugins/insert-post-ads

Sie können auswählen, ob Ihre Anzeigen als erstes/zweites oder nach Belieben geschaltet werden sollen.

0
Ramkumar M

Ich suchte nach einer Möglichkeit, get_template aufzurufen, und hier teile ich es, falls es nützlich ist

<?php 
            $paragraphAfter[1] = "get_template_part( 'part-related', 'ad-first' );";
            $paragraphAfter[3] = "get_template_part( 'part-related', 'ad-third' );"; //display after the fifth paragraph
            $paragraphAfter[5] = "get_template_part( 'part-related', 'ad-fifth' );";


            $content = apply_filters( 'the_content', get_the_content() );
            $content = explode("</p>", $content);
            $count = count($content);
            for ($i = 0; $i < $count; $i++ ) {
                if ( array_key_exists($i, $paragraphAfter) ) {
                $string = eval($paragraphAfter[$i]); // Eval string
                    echo $string;
                }
                echo $content[$i] . "</p>";
            }
     ?>
0
joseyaz