Выдержка: Показать текст ИЛИ изображение ИЛИ видео

Можно ли отрегулировать выдержку, чтобы она отображала текст или одно изображение или одно видео?

Следующие коды позволяют показать все вышеизложенное, но я действительно хотел бы ограничить это, в зависимости от того, что включено в сообщение.

<?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'); ?> 

Я бы посоветовал вам рассмотреть возможность использования форматов сообщений. Вы можете увидеть мой ответ на аналогичный вопрос об изменении текста «Читать дальше», но он будет применяться аналогично вам. Для части видео вы можете создать настраиваемое поле для хранения URL-адреса видео, но в противном случае, я думаю, это было бы очень просто настроить.

Вместо того, чтобы фильтровать выдержку, это также даст вам возможность заменить the_excerpt() на:

 get_template_part( 'excerpt', get_post_format() ); 

Затем вы можете использовать excerpt.php для стандартного / резервного фрагмента, excerpt-video.php для видео и excerpt-image.php для изображений. В качестве альтернативы вы использовали бы что-то подобное в своем фильтре для проверки формата сообщения:

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