Отображение вложения(ов) в верхней части single.php
Я использую последнюю версию WP и хотел бы отобразить первое изображение, прикрепленное к сообщению, в верхней части содержимого сообщения. Какой код я должен добавить в single.php чтобы это произошло?
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');
Для большого изображения... замените "большой" определением размера, которое вы хотите, или массивом ширины и высоты.
Функция для прикрепления первого изображения к сообщению
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 и не хочу, чтобы вам приходилось устанавливать изображение, а затем вставлять его вручную. С помощью этого метода вы просто устанавливаете показанное изображение, прикрепляете его к сообщению и заканчиваете с ним.
Я не уверен, как ограничить его первым вложением (и как ограничить его вложениями изображений), но это должно быть хорошей отправной точкой. Из Кодекса:
<?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);
}
}
?>