Как мне показать вложения WordPress из текущего сообщения? - PullRequest
0 голосов
/ 27 февраля 2012

Так что в моем блоге у меня есть страница с вложенными фотографиями, но она показывает только фотографии одновременно, и эти две фотографии используются в качестве навигации, и я ненавижу это.

Я хочу, чтобы на странице вложения были показаны все фотографии, которые идут вместе с остальной частью этого набора.

Вот текущий код

        <div id="nav-images" class="navigation clearfix">
            <div class="nav-next"><?php next_image_link() ?></div>
            <div class="nav-previous"><?php previous_image_link() ?></div>

Как мне изменить это, чтобы показать все вложения сообщений?

Ответы [ 3 ]

5 голосов
/ 28 августа 2013

Для пояснения, это больше не работает - по крайней мере, в версии 3.5.2. Я использовал это вместо

$attachments = get_children(
  array(
    'post_type' => 'attachment',
    'post_parent' => get_the_ID()
  )
);
foreach ($attachments as $attachment) {
  // ...
}

Только воскрешает старую ветку, потому что эта строка занимает очень высокое место по этому поисковому запросу.

2 голосов
/ 28 февраля 2012

Находясь на странице или в сообщении, вы можете получить все его вложения со следующими данными:

global $post; // refers to the post or parent being displayed
$attachements = query_posts(
  array(
    'post_type' => 'attachment',  // only get "attachment" type posts
    'post_parent' => $post->ID,   // only get attachments for current post/page
    'posts_per_page' => -1        // get all attachments
  )
);
foreach($attachements as $attachment){
  // Do something exceedingly fancy
}

Поскольку вы находитесь на странице вложения, вы можете получить все остальные вложения, используя значение $post->post_parent:

global $post; // refers to the attachement object
$attachements = query_posts(
  array (
    'post_type' => 'attachment',  // only get "attachment" type posts
    'post_parent' => $post->post_parent,  // attachments on the same page or post
    'posts_per_page' => -1        // get all attachments
  )
);

Чтобы затем отобразить изображения вложений, вы можете использовать функцию wp_get_attachment_image_src . Идентификатор вложения будет доступен на каждой итерации цикла foreach как $attachement->ID (если вы используете то же соглашение об именах, что и в моем первом примере).

0 голосов
/ 24 июня 2016

Начиная с WordPress 3.6.0 вы также можете использовать get_attached_media .

$media = get_attached_media( 'image', $post->ID );
if(! empty($media)){
    foreach($media as $media_id => $media_file){
        $thumbnail = wp_get_attachment_image_src ( $media_id, 'thumbnail' );
        $full = wp_get_attachment_url( $media_id );
        echo '<a href="'.$full.'" target="_blank"><img src="'.$thumbnail[0].'" alt="'.$media_file->post_title.'" /></a>';
    }
}
...