0

投稿のすべての画像添付ファイルを表示しないようにしたいページがあります。

このコードを使用しましたが、機能しません:

$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
         if (($attachment->post_mime_type!="image/png") || ($attachment->post_mime_type!="image/jpg"))   {  
             echo substr(apply_filters('the_title', $attachment->post_title), 0, 25);
             echo '.zip';
             echo ' - (';
             echo _format_bytes(filesize( get_attached_file( $attachment->ID ) ));
             echo ')';
         }
    }
}
4

2 に答える 2

2

あなたの(2番目の)ifステートメントについて少し考えてみてください...あなたが言っていることは、有効なの image/pngAND image/jpg! それは明らかにあなたが望むものではありません (何もフィルタリングされません)。

置き換えてみてください:

if (($attachment->post_mime_type!="image/png") || ($attachment->post_mime_type!="image/jpg"))   {

と:

if (($attachment->post_mime_type!="image/png") && ($attachment->post_mime_type!="image/jpeg"))   {

あなたは、それがimage/pngANDではないことを望んでいると言っていますimage/jpg。ブール論理には注意してください。疑問がある場合は、さまざまな値を実行して、想定どおりに動作していることを確認してください (または紙に書き留めてください)。

png と jpg だけが画像の種類ではありません (.gif、.bmp、.webp など、最近のブラウザーで表示できる多くの画像を忘れないでください)。すべての画像タイプを除外したい場合、これは適切な方法ではありません。

編集:JPEG画像のMIMEタイプは実際にはそうimage/jpegではありませんimage/jpg

于 2013-04-30T01:48:05.457 に答える
0

そのページの page.php のバリアントを作成し、ループに次のようなものを含めてみてはいかがでしょうか:

<?php
   ob_start();
   the_content('Read the full post',true);
   $postOutput = preg_replace('/<img[^>]+./','', ob_get_contents());
   ob_end_clean();
   echo $postOutput;
?>
于 2013-04-30T01:47:48.623 に答える