我有一个页面,我想要排除显示在帖子上的所有图片附件。
我使用了这段代码,但它无效:
$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 ')';
}
}
}
答案 0 :(得分:2)
暂时考虑你的(第二个)if
陈述......你所说的相当于说什么是有效的是 image/png
和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/png
而不是image/jpg
。记住要小心你的布尔逻辑。如果有任何疑问,请尝试通过它运行各种值,以确保它正在执行您正在做的事情(甚至将其写在纸上)。
请注意,png和jpg不是那里唯一的图像类型(不要忘记.gif,.bmp,.webp以及现有浏览器可能显示的许多其他类型)。如果您想要排除所有图像类型,则无法实现此目的。
编辑:JPEG图片的mimetype实际上也是image/jpeg
,而不是image/jpg
答案 1 :(得分: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;
?>