Вложенными считаются файлы, которые были загружены (или привязаны через медиабиблиотеку) для данной страницы.
Если файл уже привязан к какой либо странице, то вкладывая его в другую страницу, он будет считаться привязанным к первой.
Вывести вложенные в запись изображения
Все вложения, включая миниатюру (если она тоже вложенная)
<!-- вложенные файлы с миниатюрой -->
<?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>
Получить дату вложения файла
<?php echo get_the_date('d M Y', get_post_thumbnail_id()); ?>
Произвольные поля для файлов
function rt_image_attachment_fields_to_edit($form_fields, $post) {
$form_fields["rt-image-link"] = array(
"label" => __("Наименование поля"),
"input" => "text", // тип поля (text или textarea)
"value" => get_post_meta($post->ID, "_rt-image-link", true),
"helps" => __("Описание к полю"),
);
return $form_fields;
}
// Сохранение
add_filter("attachment_fields_to_edit", "rt_image_attachment_fields_to_edit", null, 2);
function rt_image_attachment_fields_to_save($post, $attachment) {
if( isset($attachment['rt-image-link']) ){
update_post_meta($post['ID'], '_rt-image-link', $attachment['rt-image-link']);
}
return $post;
}
add_filter("attachment_fields_to_save", "rt_image_attachment_fields_to_save", null , 2);
[site-socialshare]