Is it possible to adjust the excerpt so it will show text or one image or one video?
The following codes makes it possible to show all of the above, but i’d really like to limit that, dependent of whats included in the post..
<?php
function improved_trim_excerpt($text) {
global $post;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $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');
?>
I would encourage you to consider using post formats. You can see my answer to a similar question about altering the “Read More” text, but it would apply similarly to you. For the video portion, you might want to create a custom field to hold the video URL, but otherwise, I imagine this would be quite simple to setup.
Rather than filtering the excerpt, this would also give you the option to replace
the_excerpt()
with:Then you could use
excerpt.php
for the default/fallback snippet,excerpt-video.php
for videos, andexcerpt-image.php
for images. Alternately, you’d use something like this in your filter to test the post format: