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

想一想你的(第二个)if陈述......你所说的相当于说有效的是任何不是AND的东西 !这显然不是你想要的(什么都不会被过滤)。image/pngimage/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 not image/jpg。记住要小心你的布尔逻辑。如果有疑问,请尝试通过它运行各种值,以确保它正在做你假设它正在做的事情(或者甚至把它写在纸上)。

请注意,png 和 jpg 并不是唯一的图像类型(不要忘记 .gif、.bmp、.webp 以及许多其他现代浏览器可以显示的图像)。如果您想排除所有图像类型,这不是解决方法。

编辑:JPEG 图像的 mimetype 实际上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 回答