• здравствуйте. для вывода первой картинки из записи использую функцию

    function get_post_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];
    
    if(empty($first_img)){
    $img_dir = get_bloginfo('template_directory');
    $first_img = $img_dir . '/images/post-default.jpg';
    }
    return $first_img;
    }

    но проблема в том, что каждом посте есть маленькая картинки в самом его конце и до картинки по умолчанию дело не доходит. подскажите пожалуйста, как добавить проверку на размер картинки. к примеру, если ширина меньше 20px — выводим дефолтовую картинку, если больше — картинку из поста.

    спасибо.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • приподниму вопрос, очень актуально !

    Посмотрите в сторону вот этой функции PHP

    в том-то вся и проблема, что в этих кодах я как кабан в бисере. изначально искал готовое решение, но видимо его нет, потом пытался сам попробовать написать, но все заканчивается тем, что функция просто перестает работать. поэтому и решил поднять данный вопрос здесь, в надежде найти помощь со стороны участников комьюнити.

    Вам правильно посоветовали куда посмотреть.
    Специально для Вас написал кусок кода.

    list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
    //list($width, $height, $type, $attr) = getimagesize("img/flag.png");
    echo "<img src=\"img/flag.jpg\" $attr alt=\"пример getimagesize()\" />";
    echo "<p>Ширина: $width, высота: $height,</P>" ;
    
    if ($height <=20){
    	echo "Всё нормально, выводим дефолтную картинку , т.к.  ширина картинки меньше 20px";
    	}
    	else {
    	echo "Выводим картинку из поста, тк. ширина больше 20px";
    	}

    по аналогии можно добавить условие на проверку в ваш код.

    гы, ширину с высотой попутал, но да ладно, смысл вроде понятен.

    если честно, не очень. через час до компьютера добирусь — попробую применить, о результатах обязательно отпишусь.

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

    if(empty($first_img)){
    $img_dir = get_bloginfo('template_directory');
    $first_img = $img_dir . '/images/post-default.jpg';
    }

    в итоге функция обретает вид

    function get_post_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];
    
    if(empty($first_img)){
    list($width, $height, $type, $attr) = getimagesize("'/images/post-default.jpg");
    echo "<img src=\"'/images/post-default.jpgg\" $attr alt=\"getimagesize()\" />";
    echo "<p>Ширина: $width, высота: $height,</p>" ;
    
    if ($height <=20){
    	echo "Всё нормально, выводим дефолтную картинку , т.к.  ширина картинки меньше 20px";
    	}
    	else {
    	echo "Выводим картинку из поста, т.к. ширина больше 20px";
    	}
    return $first_img;
    }

    теперь вообще блог не открывается, точнее открывается белая страница. подскажите пожалуйста, где ошибка и как правильно прописать ?

    никак не могу понять в чем ошибка. подскажите пожалуйста, как подправить ?

    друзья ! ткните пожалуйста носом, где у меня ошибка. методом научного тыка так и не смог победить белый экран (((

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