web-dev-qa-db-ja.com

The_content()で投稿に画像を表示しないようにするにはどうすればいいですか?

私自身のテーマを作成し、プラグインを使用しないことについてもっと学ぼうとすると、私はsingle-foobar.phpファイルのサムネイルを除くすべての画像を投稿に表示する機能が欲しいと思ったのです。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

$thumb_ID = get_post_thumbnail_id( $post->ID );
 $args = array(
   'post_type' => 'attachment',
   'numberposts' => -1,
   'post_status' => null,
   'post_parent' => $post->ID,
   'exclude' => $thumb_ID
  );

$attachments = get_posts( $args );
 if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<div class="portproject">';
       $image_res = wp_get_attachment_image( $attachment->ID, ' img-responsive' );
       echo $image_res;
       echo '</div>';
      }
 }
 else { ?>
    <span> No pictures loaded at this time</span>
 <?php } endwhile; endif; ?>

ただし、静的HTMLを適用してからget_the_content()を呼び出してみます。

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>

画像は削除されますが、投稿に(image)が空白で残り、残りのテキストが表示されます。私は似たような question を見つけました、しかしそれはget_the_content()を使うことを示唆します、しかしそれはポストからすべてのスタイリングを取り除きます。それで私の質問はどのように私はthe_content()からイメージを取り除くことができるかということですか?私は自分の検索で " the_content WordPressテキストのみ(画像タグの削除) "を見つけることができましたが、それでもやはりget_the_content()アプローチを使用します。

このように、(image)を削除してみてください。

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", " ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>
9
Bernie

私が好む方法は前の答えよりほんの少し短いです。

<php $myExcerpt = wp_trim_words( get_the_content(), 20, '' ) ; 
echo $myExcerpt ; ?>

WordPress関数 wp_trim_words() はテキストのみを返します(画像は含みません)。

wp_trim_words ( string $text, int $num_words = 55, string $more = null )

4
derekshirk