web-dev-qa-db-ja.com

投稿内容を制限し、そこから画像の説明を削除する方法

この機能を使用して、テーマの内容を制限しています。しかし、問題は私が関数を呼び出すときはいつでも、それはまた画像キャプションを表示します。 _content_limit関数を呼び出すときに画像のキャプションを削除したいのですが。

これがコードです:

function the_content_limit($max_char, $more_link_text = '', $stripteaser = 0, $more_file = '') {

    $content = get_the_content($more_link_text, $stripteaser, $more_file);

    $content = apply_filters('the_content', $content);

    $content = str_replace(']]>', ']]>', $content);

    $content = strip_tags($content);



   if (strlen($_GET['p']) > 0) {

      echo "";

      echo $content;

      echo "&nbsp;<a href='";

      the_permalink();

      echo "'>"."Read More &rarr;</a>";

      echo "";

   }

   else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {

        $content = substr($content, 0, $espacio);

        $content = $content;

        echo "";

        echo $content;

        echo "...";

        echo "&nbsp;<a href='";

        the_permalink();

        echo "'>"."</a>";

        echo "";

   }

   else {

      echo "";

      echo $content;

      echo "&nbsp;<a href='";

      the_permalink();

      echo "'>"."Read More &rarr;</a>";

      echo "";

   }

}
1
pervez

Wordpressの画像キャプションは実際にはショートコードです。ショートコードはフィルタによって適用されます。

$ content = apply_filters( 'the_content'、$ content);

たとえば、画像キャプションを入力すると、Wordpressはコンテンツに次のコードを作成します。

 [caption id = "attachment_55" align = "alignleft" width = "127" caption = "これが私のキャプションです]] [/ caption] 

コンテンツを正しく表示する には、まだapply_filters()を使用する必要があります 。 (安全なコンテンツ表示と他のすべてのショートコード)

もしあなたがショートコードを望まないのなら(あなたがストリップタグをやっているので、それはそれがどのように見えるかです)あなたはただこれを使うべきです:

 $ content = strip_shortcodes($ content); 

しかし、それが特に[キャプション]ショートコードであるなら、私はこれがうまくいくと思います、あなたが単にあなたのコードにstring-replace行を追加したいのなら:

 $ content = get_the_content($ more_link_text、$ stripteaser、$ more_file); 
 // remove [caption]ショートコード
 $ content = preg_replace( "/\[caption。*\[\/caption \]/"、 ''、$ content); 
 //短いコードが適用されます
 $ content = apply_filters( 'the_content'、$ content); 
2
truemedia