Как показать количество изображений, прикрепленных к сообщению, на странице прикрепленных изображений? - PullRequest
5 голосов
/ 21 марта 2010

Я использую страницу с вложенными изображениями, чтобы показать изображения, прикрепленные к сообщению одно за другим, в виде слайд-шоу. Я хотел бы иметь возможность отображать общее количество изображений, прикрепленных к родительскому сообщению, и номер конкретного изображения, отображаемого на любой странице вложения, чтобы вы могли видеть изображение и слова "Изображение 3 из 15 " например.

Обновление ... Мне удалось получить общее число, чтобы показать, используя этот код:

<?php 
  global $post;
  $attachments = get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) );
  $count = count( $attachments );
  echo $count; 
?>

Я до сих пор не могу понять, как показать номер текущего изображения.
У кого-нибудь есть предложения?

Обновление 2 ...

Ответ Грини почти дошел до меня, но он выводит все цифры сразу:

"Изображение 1 из 8Изображение 2 из 8Изображение 3 из 8Изображение 4 из 8Изображение 5 из 8Изображение 6 из 8Изображение 7 из 8Изображение 8 из 8 "

Вот код, который я использовал:

global $post;
$attachments = get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) );
$count = count( $attachments );
$currentImage = 1;
foreach ($attachments as $attachment) {
   // output your image here
   echo "Image ". $currentImage . " of ". $count; 
   $currentImage++; 
}

Что не так?

Обновление 3 - ОТВЕТ!

global $post;
$attachments = get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) );

$count = count( $attachments );
$specific = array();
$i = 1;

foreach ( $attachments as $attachment ) {
    $specific[$attachment->ID] = $i;
    ++$i;
}

echo "Image {$specific[$post->ID]} of {$count}";

Ответы [ 3 ]

1 голос
/ 22 марта 2010

Это работает:

global $post;
$attachments = get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) );

$count = count( $attachments );
$specific = array();
$i = 1;

foreach ( $attachments as $attachment ) {
    $specific[$attachment->ID] = $i;
    ++$i;
}

echo "Image {$specific[$post->ID]} of {$count}";
0 голосов
/ 01 июля 2013

Если вы ищете плагин для управления галереей изображений, вы можете использовать плагин attachments,

http://wordpress.org/plugins/attachments/

Он хранит галерею отдельно и не помещает галерею изображенийшорткоды в содержимом сообщения, что обеспечивает вам полное отображение изображения в вашем сообщении / странице / настраиваемом сообщении.Вы также можете изменить порядок изображений, просто перетащив их мышью

. Вот пример кода для получения изображений галереи,

<?php $attachments = new Attachments( 'attachments' ); /* pass the instance name */ ?>
<?php if( $attachments->exist() ) : ?>
  <h3>Attachments</h3>
  <p>Total Attachments: <?php echo $attachments->total(); ?></p>
  <ul>
    <?php while( $attachments->get() ) : ?>
      <li>
        ID: <?php echo $attachments->id(); ?><br />
        Type: <?php echo $attachments->type(); ?><br />
        Subtype: <?php echo $attachments->subtype(); ?><br />
        URL: <?php echo $attachments->url(); ?><br />
        Image: <?php echo $attachments->image( 'thumbnail' ); ?><br />
        Source: <?php echo $attachments->src( 'full' ); ?><br />
        Size: <?php echo $attachments->filesize(); ?><br />
        Title Field: <?php echo $attachments->field( 'title' ); ?><br />
        Caption Field: <?php echo $attachments->field( 'caption' ); ?>
      </li>
    <?php endwhile; ?>
  </ul>
<?php endif; ?> 
0 голосов
/ 21 марта 2010

Добавьте что-то подобное к приведенному выше коду:

$currentImage = 1;
foreach ($attachments as $attachment) {
   // output your image here
   echo "Image ". $currentImage . " of ". $count; 
   $currentImage++; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...