Поддержка Проблемы и решения вывод фото из БД меньшего размера

  • Здравствуйте!

    У меня установлен виджет, он отображает новости. Виджет их тянет из БД другого сайта (моего, на одном локалхосте)

    проблема в том, что тянутся фото максимального размера.

    вот так выглядит вывод: <img src=»‘.$row[‘guid’].'» style=»‘.$style.'»>

    Вопрос, как можно вывести фото размера medium

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Здравствуйте.

    Вы можете по ID изображения получить пути ко всем миниатюрам из таблицы wp_postmeta (meta_key = _wp_attachment_metadata). Более подробно можно почитать об этом в этой теме.

    denisco, спасибо — но я не совсем понимаю как это применить в моем случае. буду благодарен если разъясните

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    А как Вы получаете $row[‘guid’] ?

    Вот код виджета:

    class InkWidget extends WP_Widget {
    
    function Widget() {
        $widget_ops = array('classname' => 'Widget', 'description' => 'Виджет выводит последние записи ' );
        $this->WP_Widget('Widget', 'Import INK Posts', $widget_ops);
    }
    
    function form($instance) {
        $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
        $title = $instance['title'];
    
    ?>
      <p>
        <label for="<?php echo $this->get_field_id('title'); ?>">Заголовок:</label>
      <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" />
      </p>
    <?php
      }
    
      function update($new_instance, $old_instance) {
        $instance = $old_instance;
        $instance['title'] = $new_instance['title'];
        return $instance;
      }
    
      function widget($args, $instance) {
    
        extract($args, EXTR_SKIP);
        $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
    
        echo '<aside id="ink-widget" class="widget widget_text"><h2 class="widget-title">'.$title.'</h2>';
    
        echo '<div style="position: relative">';
    
        $connMy = mysqli_connect("localhost","+++","+++", "+++");
        //mysql_select_db("ink" ,$db);
        mysqli_query ($connMy, "SET CHARACTER SET 'utf8'");
        $sql_ink = mysqli_query($connMy, "SELECT * FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND DATE_SUB(NOW(), INTERVAL 24 HOUR) < post_date ORDER BY RAND() LIMIT 5");
        $k = 0;
    
        while ($tablerows = mysqli_fetch_array($sql_ink))
        {
            $k++;
            if ($k < 3) {$style = 'height: auto; min-height: 265px; width: 354px;'; $w = 'width: 352px;'; $h = 'height: 265px;';} else {$style = 'height: auto; min-height: 135px; width: 236px;'; $w = 'width: 234px;'; $h = 'height: 135px;';}
            $pid = $tablerows['ID'];
            $img = mysqli_query($connMy, "SELECT * FROM wp_posts WHERE post_type = 'attachment' AND post_parent = '$pid' LIMIT 1");
            $row = mysqli_fetch_array($img);
    
            echo '<a href="'.$tablerows['guid'].'"><div class="ink_block" style="'.$h.'">
    		<img src="'.$row['guid'].'" style="'.$style.'">
            <div class="ink_title" style="'.$w.'"><span style="'.$w.'">'.$tablerows['post_title'].'</span></div>
            </div></a>';
        }
    
        echo '</div>';
        echo '</aside><div style="clear: both;"></div>';
      }
    
    }
    add_action( 'widgets_init', create_function('', 'return register_widget("Widget");') );

    По идее у вас там раз есть $row[‘guid’] при таком запросе к БД, то есть и $row[‘ID’] (это как раз id вложения будет)

    можно сделать print_r($row); и посмотреть что там в массиве.
    а дальше уже по id картинки по методу denisco…

    вот что вывело
    Array ( [0] => 471074 [ID] => 471074 [1] => 12 [post_author] => 12 [2] => 2016-04-17 21:55:29 [post_date] => 2016-04-17 21:55:29 [3] => 2016-04-17 18:55:29 [post_date_gmt] => 2016-04-17 18:55:29 [4] => [post_content] => [5] => гражданин кейн [post_title] => гражданин кейн [6] => [post_excerpt] => [7] => inherit [post_status] => inherit [8] => open [comment_status] => open [9] => closed [ping_status] => closed [10] => [post_password] => [11] => grazhdanin-keyn [post_name] => grazhdanin-keyn [12] => [to_ping] => [13] => [pinged] => [14] => 2016-04-17 21:55:29 [post_modified] => 2016-04-17 21:55:29 [15] => 2016-04-17 18:55:29 [post_modified_gmt] => 2016-04-17 18:55:29 [16] => [post_content_filtered] => [17] => 471073 [post_parent] => 471073 [18] => https://site.com/wp-content/uploads/2016/04/grazhdanin-keyn.jpg [guid] => https://site.com/wp-content/uploads/2016/04/grazhdanin-keyn.jpg [19] => 0 [menu_order] => 0 [20] => attachment [post_type] => attachment [21] => image/jpeg [post_mime_type] => image/jpeg [22] => 0 [comment_count] => 0 )

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «вывод фото из БД меньшего размера» закрыта для новых ответов.