web-dev-qa-db-fra.com

Comment récupérer du texte uniquement de wp_content () et non de wp_excerpt ()?

Je développe actuellement un site Web avec WordPress 3.5 et j'ai besoin de récupérer Post Text (Texte seulement, ne pas inclure les images) à Page d'archives . Je peux le récupérer avec la méthode wp_excerpt() sans aucun problème. Mais le principal problème pour moi est que je ne peux pas obtenir la mise en page exacte du texte. La méthode wp_excerpt() renvoie un texte qui ignore tous les espaces et les sauts de ligne supplémentaires. Que devrais-je faire? Je pense que je vais obtenir Post-text uniquement avec une mise en page exacte si je peux récupérer la méthode wp_content(). Merci d'avance pour votre aide!

4
Thiha Maung

Ou encore plus simple:

echo wp_strip_all_tags( get_the_content() );

En utilisant:

  • get_the_content()

    Récupérer le contenu du message. (Doit être utilisé dans une boucle)

    Une différence importante par rapport à the_content() est que get_the_content() ne transmet pas le contenu via le 'the_content'. Cela signifie que get_the_content() ne va pas incorporer automatiquement de vidéos ni développer de codes courts, entre autres.

  • wp_strip_all_tags()

    Éliminer correctement toutes les balises HTML, y compris le script et le style.

8
andy

Il n’existe pas de fonction WordPress native permettant de récupérer du texte uniquement, mais vous pouvez utiliser des filtres WordPress et du code regex pour cibler ce problème spécifique.

Pour obtenir du texte non formaté, utilisez get_the_content () function . Pour appliquer tous les filtres, utilisez cette méthode (voir codex: http://codex.wordpress.org/Function_Reference/the_content#Alternative_Usage ):

$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;

Avant d’appliquer des filtres, vous avez un espace pour vos modifications personnalisées, par exemple. supprimer des images. Par ici:

$content = get_the_content();
$content = preg_replace('/(<)([img])(\w+)([^>]*>)/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

Source du code preg_replace: http://www.phpzag.com/php-remove-image-tags-from-a-html-string-with-preg_replace/

Vous devrez peut-être également supprimer les codes abrégés, le cas échéant. Cela peut être fait aussi via preg_replace et je parie que vous en trouverez sur google.

4
david.binda

J'ai combiné les résultats des autres réponses de cet article pour supprimer des images et du son, etc., tout en conservant le formatage. En récupérant d'abord le contenu avec get_the_content, puis en le passant à travers le filtre "the_content" pour ajouter le formatage, etc., puis en utilisant php'sstrip_tags pour n'autoriser qu'un nombre limité de balises.

strip_tags(apply_filters('the_content',get_the_content()),"<p><a><br><b><u><i><strong><span><div>");

1
pietervanderstar

Le code suivant fonctionne parfaitement pour moi. Ajoutez simplement ceci à votre fichier functions.php dans votre thème:

// Hook : to get content without images
add_filter('the_content', 'wpse_get_content_without_images');

function wpse_get_content_without_images() {
    $content = get_the_content();
    $content = preg_replace( '/<img[^>]+./', '', $content );
    echo $content;
}

Ensuite, obtenez le contenu de votre message de manière standard en utilisant echo the_content();.

1
ITstudios

Voici le code pour supprimer le contenu de la galerie et pour n’avoir que du contenu.

$content = get_the_content();
        $content = preg_replace('/\[gallery.*ids=.(.*).\]/', "", $content);
        $content = apply_filters('the_content', $content);
        $content = str_replace(']]>', ']]&gt;', $content);
        echo $content;
0
Rhinotheme