显示所有附件,但如果没有附件回显为空

时间:2011-05-12 18:54:45

标签: php wordpress

好的,以下是我在类别和标签页面上的代码。它显示了给定类别或标签中最近8个帖子的所有附件。因此,如果我在“汽车”类别页面上,它只显示被归类为“汽车”的帖子中的照片。那部分效果很好。

我想要做的就是这样做,即使该类别中有多个帖子,如果这些帖子都没有附件,也会回复一些类似“抱歉没有照片”的内容。

<?php if (have_posts()) : ?>

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

 <?php
$args = array( 'post_type' => 'attachment', 'numberposts' => 8, 'post_status' => null, 'post_parent' => $post->ID ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
        echo '<li>';
        the_attachment_link( $attachment->ID , false );
        echo '</li>';
    }
}

?> <?php endwhile; ?>
     <?php endif; ?>

我尝试添加一个else语句,如下所示:

<?php endwhile; else: ?>
 <p>sorry no photos here</p>
 <?php endif; ?>

但是,如果一个帖子有一张照片但另一个没有,那么它会显示一张照片,但它也会回显else语句。

唷!很长的解释。这不是生死,但是我花了很多时间在它上面无济于事,我可能比它应该更多地被它所掩盖。 :/

提前致谢!

Wordpress来源:http://codex.wordpress.org/Template_Tags/get_posts#Show_all_attachments

2 个答案:

答案 0 :(得分:0)

你的其他地方在错误的地方,它作为另外一个条件在have_posts()上你需要它作为if($ attachments)的其他条件,如下:

if ($attachments) {
    foreach ( $attachments as $attachment ) {
        echo '<li>';
        the_attachment_link( $attachment->ID , false );
        echo '</li>';
    }
}
else
{
    echo "sorry no photos here";
}

如果不起作用,请尝试:

if (count($attachments)>0) {
    foreach ( $attachments as $attachment ) {
        echo '<li>';
        the_attachment_link( $attachment->ID , false );
        echo '</li>';
    }
}
else
{
    echo "sorry no photos here";
}

答案 1 :(得分:0)

对不起,我工作的电力消失了......

所以我这样做了:

if ($attachments) {
    var_dump($attachments);
    foreach ( $attachments as $attachment ) {
        echo '<li>';
        the_attachment_link( $attachment->ID , false );
        echo '</li>';
    }
}
else
{
    echo "sorry no photos here";
}

并得到了这个:

NULL array(1){[0] =&gt; object(stdClass)#567(32){[“ID”] =&gt; int(65)[“post_author”] =&gt; string(1)“1”[“post_date”] =&gt; string(19)“2011-03-24 03:50:31”[“post_date_gmt”] =&gt; string(19)“2011-03-24 10:50:31”[“post_content”] =&gt; string(0)“”[“post_title”] =&gt; string(7)“Joe Ahn”[“show_in_menu”] =&gt; string(1)“1”[“link_link”] =&gt; string(1)“1”[“no_follow_link”] =&gt; string(1)“0”[“alt_link_text”] =&gt; NULL [“custom_link_class”] =&gt; NULL [“redirect_url”] =&gt; NULL [“target_blank”] =&gt; string(1)“0”[“alt_title_attribute”] =&gt; NULL [“post_excerpt”] =&gt; string(0)“”[“post_status”] =&gt; string(7)“inherit”[“comment_status”] =&gt; string(4)“open”[“ping_status”] =&gt; string(4)“open”[“post_password”] =&gt; string(0)“”[“post_name”] =&gt; string(3)“ahn”[“to_ping”] =&gt; string(0)“”[“pinged”] =&gt; string(0)“”[“post_modified”] =&gt; string(19)“2011-03-24 03:50:31”[“post_modified_gmt”] =&gt; string(19)“2011-03-24 10:50:31”[“post_content_filtered”] =&gt; string(0)“”[“post_parent”] =&gt; int(64)[“guid”] =&gt; string(66)“http://www.ouhsd.k12.ca.us/news/wp-content/uploads/2011/03/ahn.jpg”[“menu_order”] =&gt; int(0)[“post_type”] =&gt; string(10)“attachment”[“post_mime_type”] =&gt; string(10)“image / jpeg”[“comment_count”] =&gt; string(1)“0”[“filter”] =&gt; string(3)“raw”}}