Показать все вложения, но если вложения нет, эхо пустое - PullRequest
0 голосов
/ 12 мая 2011

Хорошо, ниже приведен код, который у меня есть на странице категории и тегах Он показывает все вложения из 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 голосов
/ 13 мая 2011

Извините, у меня отключилось электричество ...

Итак, я сделал это:

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] => object (stdClass) # 567 (32) {["ID"] => int (65) ["post_author"] => string (1) "1" [ "post_date"] => string (19) "2011-03-24 03:50:31" ["post_date_gmt"] => string (19) "2011-03-24 10:50:31" ["post_content"] => string (0) "" ["post_title"] => string (7) "Joe Ahn" ["show_in_menu"] => string (1) "1" ["link_link"] => string (1) "1 "[" no_follow_link "] => string (1)" 0 "[" alt_link_text "] => NULL [" custom_link_class "] => NULL [" redirect_url "] => NULL [" target_blank "] => string (1) "0" ["alt_title_attribute"] => NULL ["post_excerpt"] => строка (0) "" ["post_status"] => строка (7) "наследовать" ["comment_status"] => строка (4) " open "[" ping_status "] => string (4)" open "[" post_password "] => string (0)" "[" post_name "] => string (3)" ahn "[" to_ping "] => string (0) "" ["pinged"] => string (0) "" ["post_modified"] => string (19) "2011-03-24 03:50:31" ["post_modified_gmt"] => строка (19) "2011-03-24 10:50:31" ["post_content_filtered"] => string (0) "" ["post_parent"] => int (64) ["guid"] => string (66) "http://www.ouhsd.k12.ca.us/news/wp-content/uploads/2011/03/ahn.jpg" [" menu_order "] => int (0) ["post_type"] => string (10) "attachment" ["post_mime_type"] => string (10) "image / jpeg" ["comment_count"] => string (1) "0" [" filter "] => string (3)" raw "}}

0 голосов
/ 12 мая 2011

Ваш else находится не в том месте, он действует как условие else для have_posts (), вам нужно, чтобы оно было условием else для 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...