Вложенными считаются файлы, которые были загружены (или привязаны через медиабиблиотеку) для данной страницы.
Если файл уже привязан к какой либо странице, то вкладывая его в другую страницу, он будет считаться привязанным к первой.
Вывести вложенные в запись изображения
Все вложения, включая миниатюру (если она тоже вложенная)
<!-- вложенные файлы с миниатюрой --> <?php $images = get_attached_media('image', $post->ID); foreach($images as $image) : ?> <a href="<?php echo wp_get_attachment_image_url($image->ID, 'full'); ?>"><img src="<?php echo wp_get_attachment_image_url($image->ID, 'thumbnail'); ?>" /></a> <?php endforeach; ?>
Все вложения, кроме миниатюры (если она тоже вложенная)
<!-- вложенные файлы, кроме миниатюры --> <?php $attachments = get_posts( array( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ) ); if ( $attachments ) : ?> <?php foreach ( $attachments as $attachment ) : ?> <?php $thumbimg = wp_get_attachment_link( $attachment->ID, 'thumbnail'); ?> <?php echo $thumbimg ; ?> <?php endforeach; ?> <?php endif; ?>
Страница вложения
WordPress автоматически для каждого изображения формирует страницу вложения. Если изображения привязаны к конкретной записи, то страницы вложения переадресуются на саму запись. Но если изображения вгружены в админку и не привязаны ни к одной из записей, то они будут формировать страницы вида: site.ru/nazvanie-izo (название изображения). Такие страницы попадают в индекс (что плохо) и их никак не закрыть правилами robots.txt. Закрываем их от индексации таким образом:
//запрет индексирования страниц вложений function wph_noindex_for_attachment() { if(get_post_mime_type()!= false) { echo '<meta name="robots" content="noindex, nofollow" />'.PHP_EOL; } } add_action('wp_head', 'wph_noindex_for_attachment');
Ссылка на исходное изображение миниатюры
Если мы делаем например галерею в виде изображений-постов, то в ссылке необходимо указывать ссылку на оригинал изображения:
<?php $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'has_post_thumbnail' ); $url = $thumb['0']; ?> <a href="<?php echo $url; ?>"><?php the_post_thumbnail('rectangle'); ?></a>