Ergreifen Sie den ersten Absatz jedes Beitrags

Ich habe einen Code, der preg_match verwendet, um den ersten Absatz zu erfassen und ihn dann in der Schleife auszuspucken:

function first_paragraph() { global $post, $posts; $first_para = ''; ob_start(); ob_end_clean(); $output = preg_match_all('%(

]*>.*?

)%i', $post->post_content, $matches); $first_para = $matches [1] [0]; echo $first_para; }

Allerdings gibt es ein kleines Problem damit. Es funktioniert nur, wenn ich Text in

-Tags im Editor manuell umgebe und nicht anders. Reguläre Ausdrücke sind sicherlich nicht meine Stärke, also wäre jede Hilfe oder jedes weitere Verständnis groß.

Und das funktioniert auch, wickelt die Bilder / iframes in p Tags:

 function first_paragraph() { global $post, $posts; $first_para = ''; ob_start(); ob_end_clean(); $post_content = $post->post_content; $post_content = apply_filters('the_content', $post_content); $output = preg_match_all('%(

]*>.*?

)%i', $post_content, $matches); $first_para = $matches [1] [0]; echo $first_para; }

Solutions Collecting From Web of "Ergreifen Sie den ersten Absatz jedes Beitrags"

Sie können diese function verwenden:

 function get_first_paragraph(){ global $post; $str = wpautop( get_the_content() ); $str = substr( $str, 0, strpos( $str, '' ) + 4 ); $str = strip_tags($str, ''); return '

' . $str . '

'; }

und nenne es dann in deiner Schleife mit:

 < ?php echo get_first_paragraph(); ?> 

Der magische Teil, nach dem du suchst, ist wpautop , eine WordPress-function, die doppelte Zeilenumbrüche im Text in richtige Absätze umwandelt.

Wenn Sie wpautop verwenden, können Sie dann die PHP-function substr verwenden , um den ersten Absatz beginnend beim ersten Zeichen bis zum ersten schließenden Absatz zu erstellen und dann 4 Zeichen hinzuzufügen, damit das schließende Tag nicht entfernt wird.


Um dies weiter zu erweitern, wenn Sie dann alles außer dem ersten Absatz erhalten möchten, können Sie diese komplementäre function verwenden, die am Ende des ersten schließenden Absatz-Tags beginnt und alles danach bekommt:

 function get_the_post(){ global $post; $str = wpautop( get_the_content() ); $str = substr( $str, (strpos( $str, ''))); return $str; } 

und rufe es in die Schleife mit:

 < ?php echo get_the_post(); ?> 

Versuche dies:

 function first_paragraph() { global $post, $posts; $post_content = $post->post_content; $post_content = apply_filters('the_content', $post_content); $post_content = str_replace('', '', $post_content); $paras = explode('

', $post_content); array_shift($paras); return $paras[0]; }