Отображение вложения(ов) в верхней части single.php


Я использую последнюю версию WP и хотел бы отобразить первое изображение, прикрепленное к сообщению, в верхней части содержимого сообщения. Какой код я должен добавить в single.php чтобы это произошло?

Author: MikeSchinkel, 2010-08-23

3 answers

Вложения считаются дочерними по отношению к сообщению, к которому они прикреплены, поэтому это должно работать:

$images=get_children( array('post_parent'=>$post->ID,
                            'post_mime_type'=>'image',
                             'numberposts'=>1));
echo wp_get_attachment_image($images[0]->ID, 'large');

Для большого изображения... замените "большой" определением размера, которое вы хотите, или массивом ширины и высоты.

 2
Author: goldenapples, 2010-08-23 03:14:51

Функция для прикрепления первого изображения к сообщению

function the_image($size = 'medium' , $class = ”){
global $post;

//setup the attachment array
$att_array = array(
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order_by' => 'menu_order'
);

//get the post attachments
$attachments = get_children($att_array);

//make sure there are attachments
if (is_array($attachments)){
//loop through them
foreach($attachments as $att){
//find the one we want based on its characteristics
if ( $att->menu_order == 0){
$image_src_array = wp_get_attachment_image_src($att->ID, $size);

//get url – 1 and 2 are the x and y dimensions
$url = $image_src_array[0];
$caption = $att->post_excerpt;
$image_html = '<img src="%s" alt="%s" />';

//combine the data
$html = sprintf($image_html,$url,$caption,$class);

//echo the result
echo $html;
}
}
}
}

Теперь нам нужно указать WordPress, где отображать это изображение

Добавьте эту строку, где вы хотите отобразить изображение:

<?php the_image('medium','post-image'); ?>

Попался за то, что использовал этот подход

Если вы добавите изображение в редактор сообщений, оно отобразится 2 раза.

Пример использования этого подхода

Это отлично работает, когда вы хотите использовать миниатюры (рекомендуемое изображение) на страницах вашего блога, затем отобразите увеличенную версию изображения в single.php и не хочу, чтобы вам приходилось устанавливать изображение, а затем вставлять его вручную. С помощью этого метода вы просто устанавливаете показанное изображение, прикрепляете его к сообщению и заканчиваете с ним.

 1
Author: Chris_O, 2020-06-15 08:21:38

Я не уверен, как ограничить его первым вложением (и как ограничить его вложениями изображений), но это должно быть хорошей отправной точкой. Из Кодекса:

<?php

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $post->ID
    ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

?>
 0
Author: Travis Northcutt, 2010-08-23 02:36:10