web-dev-qa-db-fra.com

Afficher uniquement le contenu avant plus de balises

J'utilise le modèle de sirène. Dans homepage.php ce code est utilisé pour afficher le contenu du portefeuille

print_excerpt(200);

Mais je n'ai besoin d'afficher le contenu qu'avant <!--more-->

J'ai utilisé ceci:

the_content( $more_link_text, FALSE);

mais ça ne fonctionne pas. Il montre tout le contenu

5
MajidGh

Vous pouvez utiliser la fonction WordPress get_extended pour récupérer les différentes parties d’une chaîne (la partie avant et la partie après la balise <!--more-->). get_extended renvoie un tableau avec trois clés, dont les clés main et extended sont importantes: $arr['main'] contient la partie précédant la balise more et $arr['extended'] la partie après la balise more.

Cela donnerait quelque chose comme:

// Fetch post content
$content = get_post_field( 'post_content', get_the_ID() );

// Get content parts
$content_parts = get_extended( $content );

// Output part before <!--more--> tag
echo $content_parts['main'];
13
engelen

Malheureusement, il semble que toutes les fonctions de WordPress censées restituer l’extrait (get_extended, get_extended) n’appliquent pas les balises HTML ni ne convertissent les retours chariot dans les paragraphes aspectés.

Si vous avez besoin de rendre l'extrait avec la mise en forme, je vous suggère d'utiliser ce code:

global $more;
$more_backup = $more;
$more = 0;
the_content('');
$more = $more_backup;

Avec cette solution de contournement, vous dites à la fonction_content () qu’elle se trouve dans une boucle et récupère le contenu avant la balise more.

0
Marco Panichi