web-dev-qa-db-ja.com

抜粋:表示テキスト OR 画像 OR ビデオ

テキストまたは1つの画像またはが表示されるように抜粋を調整することは可能ですか。 - )一つのビデオ?

以下のコードは上記のすべてを表示することを可能にします、しかし私はポストに含まれるものに依存して、本当にそれを制限したいです..

<?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

投稿フォーマットの使用を検討することをお勧めします。あなたは "続きを読む"というテキストの変更についての同様の質問 に対する私の答えを見ることができますが、それはあなたにも同様に当てはまるでしょう。動画部分については、動画のURLを保持するカスタムフィールドを作成することをお勧めしますが、それ以外の場合は、設定が非常に簡単になると思います。

抜粋をフィルタリングするのではなく、the_excerpt()を次のように置き換えるオプションもあります。

get_template_part( 'excerpt', get_post_format() );

そうすると、デフォルト/フォールバックスニペットにexcerpt.php、ビデオにexcerpt-video.php、画像にexcerpt-image.phpを使用できます。あるいは、投稿フォーマットをテストするために、フィルタに次のようなものを使用します。

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