web-dev-qa-db-fra.com

L'extrait: Afficher le texte OR image OR vidéo

Est-il possible d'ajuster l'extrait pour qu'il affiche le texte ou une image ou une vidéo?

Les codes suivants permettent d’afficher tout ce qui précède, mais j’aimerais vraiment limiter cela, en fonction de ce qui est inclus dans le message.

<?php 
function improved_trim_excerpt($text) {
        global $post;
        if ( '' == $text ) {
                $text = get_the_content('');
                $text = apply_filters('the_content', $text);
                $text = str_replace('\]\]\>', ']]&gt;', $text);
                $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
                $text = strip_tags($text, '<iframe>, <p>, <img>');
                $excerpt_length = 66;
                $words = explode(' ', $text, $excerpt_length + 1);
                if (count($words)> $excerpt_length) {
                        array_pop($words);
                        array_Push($words, '[...]');
                        $text = implode(' ', $words);
                }
        }
        return $text;
}
?>
<?php
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');
?>
2
Phife Dawz

Je vous encourage à envisager l'utilisation de formats de publication. Vous pouvez voir ma réponse à une question similaire sur la modification du texte "Lire la suite", mais cela s'appliquerait de la même manière. Pour la partie vidéo, vous souhaiterez peut-être créer un champ personnalisé pour contenir l'URL de la vidéo, mais sinon, j'imagine que ce serait assez simple à configurer.

Plutôt que de filtrer l'extrait, cela vous donnerait également la possibilité de remplacer the_excerpt() par:

get_template_part( 'excerpt', get_post_format() );

Vous pouvez ensuite utiliser excerpt.php pour l'extrait de code par défaut/de secours, excerpt-video.php pour les vidéos et excerpt-image.php pour les images. Alternativement, vous utiliseriez quelque chose comme ceci dans votre filtre pour tester le format de publication:

if( get_post_format() == 'video' ) { // etc...
3
mrwweb