erichmond
  • 0
Новичок

Получить изображение из медиатеки. Проблемы с кодом?

  • 0

Борясь с этим кодом, условия работают, единственный способ получить wp_get_attachment_url — это пройти через него, но тогда это выводит столько изображений из медиатеки, а мне нужно только одно?

  <div class="tvimage">
  <?php
    if ($imgurlbase != '' ) { ?>

    <img src="<?php bloginfo('template_url'); ?>/timthumb.php?src=<?php echo $imgurlbase . $imgfromtv; ?>&h=62&w=75" alt="<?php echo $programme; ?>">

            <?php } elseif ($imgurlbase == '' ) { ?>

            <?php
    $args = array(
        'post_type' => 'attachment',
        'numberposts' => -1,
        'post_status' => null,
        'post_parent' => null,
        ); 
    $attachments = get_posts( $args );


                foreach ( $attachments as $attachment ) {

                    if ($attachment->post_title == $programme) {
                            echo wp_get_attachment_url($attachment->ID);
                        }
                    else {
                    echo '<img src="';
                    echo bloginfo('template_url');
                    echo '/images/nontvimg.jpg" alt="no tv image" />';
                    }

                }


    ?>



            <?php } ?>


</div>
Share
  1. Почему вы используете URL-адрес шаблона, если изображение находится в медиатеке? Загруженные элементы хранятся в каталоге загрузки, который обычно находится по адресу wp-content/uploads/ .. Кроме того -1, в аргументе numberposts для этого запроса задано неограниченное значение, отбросьте минус (чтобы установить значение 1).

    • 0
    • поскольку первое изображение является настраиваемым полем и также запускается через скрипт, мне нужно просмотреть все изображения, чтобы найти совпадение с $programme, но я хочу вывести только одно

      • 0
    • Как я уже сказал, измените на -1 a, 1 и вы получите только одно изображение, а не горы (минус один означает отсутствие ограничений).

      • 0
    • @erichmond: я думаю, вам нужно предоставить немного больше контекста тому, чего вы хотите достичь. Что ты имеешь в виду, говоря, что ты хочешь только одного? Вы явно генерируете вывод для каждой итерации вашего цикла. Кроме того, что внутри $programme ? И… может быть, вы хотите, чтобы изображения, прикрепленные к текущему сообщению, совпадали $programme ? Просто не совсем понятно, чего вы пытаетесь достичь.

      • 0
    • @ t31os: Нет, он не может этого сделать, он пытается найти вложение по его названию… если для этого нет аргумента запроса?

      • 0
    • Как $programme определяется? И, пожалуйста, прекратите публиковать ответы в виде обновлений, сайты Stackoverflow/StackExchange не работают, если только вы не предоставляете решение/ответ на свой собственный вопрос. Пожалуйста, добавляйте любые обновления или новые образцы кода к исходному вопросу.

      • 0
  2. Если вы хотите выйти из цикла после того, как найдете вложение, используйте break .

     // Define $programme and pull up $attachments as above
     $attachment_url = '';
     foreach ( $attachments as $attachment ) {
         if ($attachment->post_title == $programme) {
             $attachment_url = wp_get_attachment_url($attachment->ID);
             break;
         }
     }
    
     if ( $attachment_url ) {
         echo $attachment_url;
     } else {
         echo '/images/nontvimg.jpg';
     }
    
    • 0
  3. Сортировка это новый код:

    <?php
                if ($imgurlbase != '' ) { ?>
    
                <img src="<?php bloginfo('template_url'); ?>/timthumb.php?src=<?php echo $imgurlbase . $imgfromtv; ?>&h=62&w=75" alt="<?php echo $programme; ?>">
    
                <?php } elseif ($imgurlbase == '' ) { ?>
    
                    <img src="<?php bloginfo('template_url'); ?>/timthumb.php?src=<?php
                    $args = array(
                        'post_type' => 'attachment',
                        'numberposts' => -1,
                        'post_title' => $programme
                        ); 
                    $attachments = get_posts( $args );
    
                    $found = 0;
                    foreach ( $attachments as $attachment ) {
                       if ($attachment->post_title == $programme) {
                          echo wp_get_attachment_url($attachment->ID);
                          ++$found;
                       }
                    }
                    if (!$found) {
                       echo '/images/nontvimg.jpg';
                    }
    
                    ?>&h=62&w=75">
    
    
                <?php } ?>
    
    • 0

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

You must login to add an answer.