scottb
  • 0
Гуру

Отображение прикрепленных(ых) сообщений вверху файла single.php

  • 0

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

Share
  1. Я предполагаю, что вы уже рассматривали возможность использования избранного изображения и решили, что оно не соответствует вашему варианту использования? (Это большое количество существующих сообщений или вы разрабатываете систему для добавления сообщений в будущем?)

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

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

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

    • 0
  3. Функция для получения первого изображения, прикрепленного к сообщению

    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 и не хотите устанавливать избранное изображение, а затем вставлять его вручную. С помощью этого метода вы просто устанавливаете избранное изображение, чтобы прикрепить его к сообщению, и на этом все.

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

    <?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

Оставить ответ

You must login to add an answer.